范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Java设计模式之调停者模式

  一、概述
  调停者模式。
  我们想象一下这样的场景:一个系统内部通过许多的类互相之间相互调用来完成一系列的功能,这个系统内部的每个类都会存在至少一次的调用与被调用,多者数不胜数,这种情况下,一旦某个类发生问题,进行修改,无疑会影响到所有调用它的类,甚至它调用的类,可见这种情况下,类与类之间的耦合性极高(体现为太多的复杂的直接引用)。
  这正是调停者模式的主场,调停者犹如第三方中介一般,将所有的类与类之间的引用都导向调停者类,所有类的请求,一致发向调停者,由调停者再发向目标类,这样原本复杂的网状的类关系,变成了简单的星型类关系,调停者类位于核心,所有其他类位于外围,指向调停者。如此这般,类与类之间的直接调用耦合被解除(通过统一的第三方来发起调用),某个类发生问题,发生修改,也只会影响调停者,而不会直接影响到间接发起调用的那些类。二、示例
  下面举个生活中的实例:一个公司部门,有一个经理来充当调停者,其下的员工充当互相作用的类,这是一个很形象的实例。如果所有职员之间的互动都由职工之间直接进行,一旦某个员工不在,那么必须由此员工操作的事情便无法互动起来,或者某个员工被更换,员工之间不熟悉,也无法进行互动,这样,经理这个调停者的作用就来了,发起需求的员工将需求告诉经理,经理再找其他员工操作这个需求,明显的调停者模式。
  下面看看示例代码:
  调停者接口:Mediator/**  * 调停者接口  */ public interface Mediator {     void change(String message,ZhiYuan zhiyuan,String name); }
  职工抽象类:ZhiYuan/**  * 职员接口  */ public abstract class ZhiYuan {     String name;     private Mediator mediator;     public ZhiYuan(Mediator mediator,String name){         this.mediator = mediator;         this.name = name;     }     //被调停者调用的方法     public void called(String message,String nname){         System.out.println(name + "接收到来自"+ nname + "的需求:" + message);     }     //调用调停者     public void call(String message,ZhiYuan zhiyuan,String nname){         System.out.println(nname + "发起需求:"+ message);         mediator.change(message,zhiyuan,nname);     } }
  具体的调停者:Jingli/**  * 调停者:经理  */ public class Jingli implements Mediator {     @Override     public void change(String message,ZhiYuan zhiyuan,String nname) {         System.out.println("经理收到" + nname + "的需求:" + message);         System.out.println("经理将" + nname + "的需求发送给目标职员");         zhiyuan.called(message,nname);     } }
  具体的职员:ZhiyuanA、ZhiyuanB、ZhiyuanC/**  * 职员A  */ public class ZhiyuanA extends ZhiYuan {     public ZhiyuanA(Mediator mediator, String name) {         super(mediator, name);     } }  /**  * 职员B  */ public class ZhiyuanB extends ZhiYuan {     public ZhiyuanB(Mediator mediator, String name) {         super(mediator, name);     } }  /**  * 职员C  */ public class ZhiyuanC extends ZhiYuan {     public ZhiyuanC(Mediator mediator, String name) {         super(mediator, name);     } }
  测试类:Clienterpublic class Clienter {     public static void main(String[] args) {         //分配职员与经理         Mediator jingli = new Jingli();         ZhiYuan zhiyuanA = new ZhiyuanA(jingli,"职员A");         ZhiYuan zhiyuanB = new ZhiyuanB(jingli,"职员B");         ZhiYuan zhiyuanC = new ZhiyuanC(jingli,"职员C");         //职员A的需求         String messageA = "这些资料需要B职员操作";         zhiyuanA.call(messageA,zhiyuanB,zhiyuanA.name);         //职员C的请求         String messageC = "这些资料需要B职员签名";         zhiyuanC.call(messageC, zhiyuanB,zhiyuanC.name);     } }
  执行结果:职员A发起需求:这些资料需要B职员操作 经理收到职员A的需求:这些资料需要B职员操作 经理将职员A的需求发送给目标职员 职员B接收到来自职员A的需求:这些资料需要B职员操作 职员C发起需求:这些资料需要B职员签名 经理收到职员C的需求:这些资料需要B职员签名 经理将职员C的需求发送给目标职员 职员B接收到来自职员C的需求:这些资料需要B职员签名
  如上所列,职工A和职工C都需要请求职工B,但是假如他们不认识职工B,那么就将工作需求提交给经理,经理再将工作需求发送给职工B。三、模式解析
  使用调停者模式貌似要比原本的结构消耗时间,但是却将需求的发起者与执行者之间的强耦合进行了降低,极大的优化了系统内部的维护工作。
  调停者模式降低的是系统内部的耦合性,而外观模式降低的是系统之间的耦合性。
  调停者模式更加细化,针对的是系统内部类与类之间的强耦合的解除,外观模式则较为统筹,针对的是整个系统对外的耦合性解除,二者都都有屏蔽复杂性的作用。

清爽的秋季,汉让出行更方便本人是90后,奔年纪了,汉是我第一辆车,之前是开父亲一辆老款卡罗拉,他用车较少,一般都是我在用,也是我练手车,在我工作初期也给予了我很大方便,但空间一般,动力一般,驾驶乐趣几乎没有win764位系统电脑笔记本设置wifi热点的方法在深度技术官网里面有很多使用win764位系统的用户,但是有小伙伴却不知道win7笔记本电脑其实是可以设置wifi热点,临时给手机或者其他设备提供无线网络的。那么笔记本电脑如何设置win1021h1系统出现开始菜单没反应的解决方法有不少深度技术用户都将自己的电脑升级到了最新版win1021h1系统版本了,但在使用的过程中难免会遇到一些情况。近来有小伙伴就表示说自己的win10系统电脑出现了点击开始菜单没反应win10系统纯净版任务栏没有wifi图标的处理方法有不少深度技术用户都使用笔记本电脑的,当然笔记本开机第一件事情就是连接无线WiFi来上网,但是有小伙伴却遇到wifi图标消失了。其实,这属于常见的问题之一。别着急,下面我们一起来看重装系统win7电脑出现听不到声音的解决方法有一位深度技术系统的小伙伴,在电脑重装系统win7后出现了看电影听音乐视频聊天都听不到声音的问题。其实这个是因为电脑驱动没有安装好导致的,下面,深度技术小编来分享一下具体的解决方法win7旗舰版电脑开机出现无限自动重启的问题有很多深度技术的用户都喜欢win7旗舰版系统的,但是电脑用的时间长了,总会出现问题的。这不有一位小伙伴的win7系统电脑就出现了开机不断重启的问题。相信很多朋友都遇到过win7开机win10纯净版卡在登陆界面进不去系统的解决方法一大早有一位深度技术的小伙伴火急火燎地找到小编反馈问题,说他的电脑win10纯净版开机后停留在登录界面进不去系统的问题,真是让他崩溃,他还要用电脑来工作搬砖呢。为什么会这样?出现这win10专业版玩盗贼之海出现闪退的解决方法有一位深度技术的小伙伴在steam商店里面安装下载了盗贼之海这款游戏,结果在玩游戏的时候出现闪退崩溃问题,这种情况要怎么解决?不要着急,下面深度技术小编告诉大家一下具体解决方法。1win10正式版系统玩cf不能全屏的解决方法有一位深度技术的用户在使用win10正式版系统电脑上玩穿越火线CF的时候,游戏刚进去就出现屏幕两边出现黑框,游戏不能铺满全屏的问题,下面,深度技术小编就来分享两种设置CF游戏全屏的win7纯净版64位系统如何清空ie临时文件夹的方法不用深度技术小编多说吧,相信很多小伙伴都知道,win7纯净版系统是自带有ie浏览器,在浏览过的网页会保存到ie临时文件中。如果ie临时文件夹缓存的文件太多的话,电脑就会出现卡顿打开比亚迪唐DMi是我心中的完美座驾是一个有两个孩子的妈妈,也是一名会计工作者。我觉得,女人挑选一辆心仪的汽车,和挑另一半一样,不仅要看颜值高不高能力够不够,还要看性格合不合得来。由于工作的关系,平日里我就喜欢精打细
车展另类老爷车(您能认识几辆?)看多了诸多脱颖而出的新生车系有没有一种视觉疲惫之感,今天让我们一起欣赏一下车展中的另类风景老爷车这是车还是六十年代的福特野马,这种老式敞篷自带拉风体系雪佛兰克尔维特是美国国宝级的超蝴蝶变鲲鹏鸿蒙国际网,鸿蒙国际网是鸿蒙(集团)公司董事长郑世宝带领其团队经过8年研发2年时间的上线试运行后,正式向社会公众用户推出的经营性网站平台。鸿蒙(集团)公司古人认为天地开辟之前是一团陕鼓集团与长春旭阳集团签订战略合作协议为构建吉陕企业全面战略合作关系,推动吉陕合作项目落地,9月7日,陕鼓集团与长春旭阳工业(集团)股份有限公司(以下简称旭阳集团)签订了战略合作伙伴协议和项目合作框架协议。双方将面向碳中国能建与浪潮集团签订战略合作协议9月2日下午,中国能建与浪潮集团在京签订战略合作协议。根据协议,双方将在数字化转型IT基础设施建设共享市场营销网络科技创新人才培养与交流等领域开展合作。中国能建党委书记董事长宋海良远程遥控仿真培训!全球首创5G遥控仿真培训智慧平台精彩亮相9月15日,山河智能逐梦山河不负使命创新成果展示会在山河工业城成功举行,山河智能全球首创的5G遥控仿真培训智慧平台在展会首次亮相,吸引了大批参会宾客和媒体关注。5G遥控仿真培训智慧新型外热送风水冷长炉龄大吨位冲天炉系统通过科技成果评价2021年9月26日,中国铸造协会在胶州市主持召开了由青岛青力环保设备有限公司完成的新型外热送风水冷长炉龄大吨位冲天炉系统的研发与应用科技项目评价会。会议邀请了中国铸造协会执行副会金风科技新型轴系样机成功并网近日,全球最大国内首台金风科技新型轴系样机在新疆维吾尔自治区达坂城风电场成功实现并网发电及满发运行。截至发稿时,新型轴系样机已完成500小时运行,机组运行平稳各项指标均高于预期。近铁建重工全球首条磁浮轨排智能化生产线助力凤凰磁浮线建设日前,凤凰磁浮文旅项目首列车成功试跑,标志着该项目正式进入联调联试阶段。凤凰磁浮文旅项目是国内首个集磁浮交通文化展览旅游休闲研学科普为一体的磁浮文旅项目,位于湖南省湘西土家族苗族自全球领先长三角首座3D打印铸造全流程智能工厂启用仪式圆满举行2021年10月19日,全球领先长三角首座3D打印铸造全流程智能工厂启用仪式在安徽芜湖圆满举行。首先,由国家智能铸造产业创新(安徽)中心常务副总经理宋亮副总经理田学智常永慧先后带领能够替代手机的安卓表皇,OPPOWatch2众测报告本次评测OPPOWatch2为什么值得买众测提供,感谢大妈提供的众测机会,手表非常的好用,我会站在客观公正的角度认真的夸夸这款非常好用甚至可以部分替代手机的安卓表皇OPPOWatc移动硬盘终结者,便携抗震高速传输奥睿科迅龙GV100移动固态硬盘与传统磁盘式的机械硬盘相比,无论是便携性耐用性还是传输速度固态硬盘都有着非常巨大的优势与闪存为基础的普通U盘相比,固态硬盘又拥有更稳定的性能更大的存储容量和更强的安全性世面上中小容