菜鸟硕枫设计模式系列之18 中介者模式
发布日期:2021-10-01 08:45:13
浏览次数:2
分类:技术文章
本文共 2856 字,大约阅读时间需要 9 分钟。
中介者模式,”中介者“,即在一系列系统交互的过程中,通过第三方的办法使得这些系统不用直接交互,都通过中介来进行。这里简化了系统的关系,但是有可能使得中介成为系统的交互瓶颈。 中介者模式类图: [img]http://dl.iteye.com/upload/attachment/364831/7c2f273b-1739-35f0-ab6f-0aa7cbb44013.jpg[/img] 具体实现示例:package mediatorPattern; public abstract class Person { private String name; private String hobby; private Mediator mediator; public Person(String name,String hobby,Mediator mediator){ this.setName(name); this.setHobby(hobby); this.setMediator(mediator); } public void setName(String name) { this.name = name; } public String getName() { return name; } public void setHobby(String hobby) { this.hobby = hobby; } public String getHobby() { return hobby; } public void setMediator(Mediator mediator) { this.mediator = mediator; } public Mediator getMediator() { return mediator; } public abstract void getPair(Person person); }
package mediatorPattern; public class Man extends Person{ public Man(String name, String hobby, Mediator mediator) { super(name, hobby, mediator); // TODO Auto-generated constructor stub } @Override public void getPair(Person person) { this.getMediator().setMan(this); this.getMediator().getPair(person); } }
package mediatorPattern; public class Woman extends Person{ public Woman(String name, String hobby, Mediator mediator) { super(name, hobby, mediator); // TODO Auto-generated constructor stub } @Override public void getPair(Person person) { // TODO Auto-generated method stub this.getMediator().setWoman(this); this.getMediator().getPair(person); } }中介类:
package mediatorPattern; public class Mediator { private Man man; private Woman woman; public void setMan(Man man) { this.man = man; } public Man getMan() { return man; } public void setWoman(Woman woman) { this.woman = woman; } public Woman getWoman() { return woman; } public void getPair(Person person){ if(person instanceof Man) this.setMan((Man)person); else this.setWoman((Woman)person); if(man!=null&&woman!=null&&(woman.getHobby().equals(man.getHobby()))){ System.out.println("A wonderful pair"); }else if(man!=null&&woman!=null){ System.out.println("A just so so pair"); }else{ System.out.println("Just gays haha"); } } }测试类:
package mediatorPattern; public class MediatorPatternTest { public static void main(String[]args){ Mediator mediator = new Mediator(); Man man = new Man("lxy","basketball",mediator); Woman woman = new Woman("who?","basketball",mediator); Man shuofeng = new Man("shuofeng","football",mediator); man.getPair(shuofeng); man.getPair(woman); shuofeng.getPair(woman); System.out.println("-----------------"); woman.getPair(man); woman.getPair(shuofeng); } }说明:man 和 woman通过mediator去gerPair,使得Man和Woman不直接发生关系,这样两个类就在业务上分离了,这是最少知识原则的又一体现,和代理模式有着异曲同工之妙。
转载地址:https://blog.csdn.net/iteye_2655/article/details/81970494 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月01日 10时17分43秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Android 自定义View实现炮弹射击小游戏
2019-04-26
mysql设置不区分大小写
2019-04-26
linux下安装redis
2019-04-26
linux安装nginx(centos/Ubuntu/debian)
2019-04-26
linux下安装artemis
2019-04-26
mysql查询某属性值出现次数大于1
2019-04-26
mysql处理跨连接(dblink)
2019-04-26
mysql游标循环表与存储过程传参
2019-04-26
nginx配置文件里user只能是root,否则报403错误
2019-04-26
nginx 中location中root和alias的区别
2019-04-26
flowable集成后扫描不到jar包中mapping而报错
2019-04-26
flowable表单设计器选型
2019-04-26
高可用 Redis 服务架构分析与搭建
2019-04-26
flowable使用extensionElements自定义节点
2019-04-26
flowable自定义节点属性
2019-04-26
UE4-Gameplay技能系统
2019-04-26
TArray的MoveTemp推荐
2019-04-26
UnrealVS插件使用
2019-04-26
UE4 Low Level Memory Tracker使用
2019-04-26
UE4 PhyX物理引擎应用介绍
2019-04-26