设计模式之中介者模式
来源:互联网 发布:素颜霜 知乎 编辑:程序博客网 时间:2024/05/17 01:26
中介者模式(Mediator Pattern):用一个中介对象来封装一系列的对象交互。中介者使各个对象间不需要显式地互相引用,所以可以使耦合松散,而且可以独立改变对象之间的交互。
比如世界上的国家可以看成一系列同类对象,如果让这些国家单独沟通,类就会变得很复杂,此时可以使用一个中介者来封装国家之间的交互。
国家类:主要实现声明信息和接收信息的方法
public abstract class Country { protected Mediator mediator; public Country(Mediator mediator) { this.mediator = mediator; } public void declare(String message){ mediator.declare(message,this); } public void getMessage(String message) { System.out.println(getClass().getSimpleName() + "得到信息:" + message); }}class China extends Country { public China(Mediator mediator) { super(mediator); }}class UnitedStates extends Country { public UnitedStates(Mediator mediator) { super(mediator); }}
中介者基类,基本方法就是接收某个国家的声明:
public interface Mediator { void declare(String message, Country country);}
中介者实现,依赖于所有的国家对象,declare()接收某个国家发送的信息,转发给其他所有国家:
public class WorldTradeOrganization implements Mediator { private China china; private UnitedStates us; public void setChina(China china) { this.china = china; } public void setUs(UnitedStates us) { this.us = us; } @Override public void declare(String message, Country country) { if (country == china) { us.getMessage(message); } else if (country == us) { china.getMessage(message); } }}
测试类:
public class Main { public static void main(String[] args) { final WorldTradeOrganization worldTradeOrganization = new WorldTradeOrganization(); final China china = new China(worldTradeOrganization); final UnitedStates us = new UnitedStates(worldTradeOrganization); worldTradeOrganization.setChina(china); worldTradeOrganization.setUs(us); us.declare("中国,你们家的老干妈真好吃"); china.declare("美国,你说得没错"); }}
输出:
China得到信息:中国,你们家的老干妈真好吃UnitedStates得到信息:美国,你说得没错
基本上就是通过创建一个中介者来降低各个国家间的耦合,某个国家的改变并不会影响到其他国家,只要修改中介者类就可以了。但是中介者与各个国家间的耦合就很高了,这是一个缺点。
阅读全文
0 0
- 设计模式之中介者
- 设计模式 之 中介者
- 设计模式之中介者
- 设计模式之Mediator中介者模式
- 设计模式之中介者模式
- 设计模式之中介者模式
- 八 设计模式之中介者模式
- 设计模式之--中介者模式
- 设计模式之中介者模式
- c++设计模式之中介者模式
- 设计模式之-中介者模式
- 设计模式之中介者模式
- c++设计模式之中介者模式
- 设计模式之中介者模式(Mediator)
- 设计模式之中介者模式
- 设计模式之中介者模式
- JAVA-设计模式之中介者模式
- 大话设计模式之中介者模式
- 2017多校三 1004题 hdu 6059 Kanade's trio Trie树 计数
- 博通wifi驱动详解(三)
- 剑指offer--孩子们的游戏(圆圈中最后剩下的数)
- java扫码登录
- FAFU OJ 全排列
- 设计模式之中介者模式
- 机器学习中的正/负样本
- Shredding Company--(DFS)
- 1.7. 高斯过程(Gaussian Processes)
- 剑指offer 之 二叉搜索树与双向链表
- TODO 解析
- 博通wifi驱动详解(四)
- JDBC初学
- Ubuntu每次开机后提示:检测到系统程序出现问题的解决方法