分享
 
 
 

设计模式笔记(9 MEDIATOR & MEMENTO)

王朝other·作者佚名  2006-04-07
窄屏简体版  字體: |||超大  

MEDIATOR(中介者)

适用性:

1.一组对象以定义良好但是复杂的方式进行通信,产生相互依赖关系混乱且难以理解。

2.一个对象引用很多其他对象并且直接与这些对象通信,导致难以复用该对象。

3.想定制分布在多个类中的行为,而又不想生成太多的子类

思考:

MEDIATOR模式虽然是协调对象的,但是对对象的组织方式也会带来重大影响。对于一组相互作用的对象,这种相互关系是网状的,搞清楚这组对象之间的联系是很困难的。通过MEDIATOR把这种网状的关系变成星型关系,对象之间的联系被切断了,只要抓住中介对象,就可以理清这一组对象。这样做的代价是,中介对象本身将可能变得非常复杂。通常,这种复杂性表现在接口上,这样一个复杂的、低内聚的接口是难以被复用的,一般也不应该复用中介者对象,那样将会限制中介者的演化。

一个工作对象要和许多对象交互,意味着如果要复用该对象的某种功能,就必须同时提供该对象需要与之交互的那些对象,事情因此而变得复杂。那么提供一个中介者,在中介者中封装访问其他所需对象的方法,那么,工作对象只需要和中介者交互就能获取必须的支持。从工作对象的视角来看,中介者很象是FACADE模式的实现,和FACADE不同的是,中介者提供的接口不像FACADE提供的那样有完备的含义,中介者提供的是一些方法的简单堆砌,而且,工作对象也无法绕过中介者直接访问子系统。这正是MEDIATOR和FACADE在意图上的区别之一。

第三个适用性的关注点是中介者本身,而前两点关注点都是在工作对象上。对于这一点,我觉得比较茫然。如果从字面来理解的话,中介者需要处于一个调停人的角色,并且中介者通常作为动作的发起者才有必要这么做。中介者需要借助其他对象来完成某些事情,从这个角度来说,这样的中介者和模版方法又神似而形非了。例如,中介者的某个方法是个一般的方法模版,假设其中的步骤方法为A,B,C。如果ABC是通过子类化重载来实现的,那是模版方法。如果ABC是分别通过Aobj的FunA,BObj的FunB,CObj的FunC来完成的,而这三个Object是中介者本身来控制的(甚至可以动态装配),也实现了模版方法的一般意图。并且,该方法还具备模版方法不具备的动态配置能力,这又像是策略模式的某些行为方式了。

MEMENTO(备忘录)

适用性:

1.必须保存某一对象在某一时刻的状态,这样,以后需要它是才能恢复到先前的状态。

2.如果用一个接口来让其他对象直接得到这些状态,将会暴露对象的实现细节并破坏对象的封装性。

思考:

可以把MEMENTO看做是一种还原点,也可以用来实现COMMAND对象的undo方法。还可以用来保存FlyWeight模式中对象的变化部分。对于实现上,通常MEMENTO需要实现宽、窄两套接口。在C++中,通常是使用friend来区分宽窄接口,然而,实际上也可以采用接口的多重继承来分离宽、窄接口。一种是通过dynamic_cast来转换,另一个手段是借助一个间接层来实现改目的()。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有