设计模式之中介者模式
来源:互联网 发布:packageinfo.java作用 编辑:程序博客网 时间:2024/06/06 04:49
设计模式之中介者模式
中介者模式的简单介绍
说到中介,我们是比较熟悉的,比如去留学,有专门的中介负责,买房子,有专门的中介负责。有中介的好处在于,我们不需要直接跟目标对象接触,也就是说,我们之间的交流可以通过中介来完成即可,这样子的好处在于,我们之间的联系不需要很紧密,特别是当涉及到的对象比较多的时候,如果对象与对象之间直接进行交互,整个关系就会变得比较复杂了。中介者模式(Mediator)就是基于这样的情形所提出来的,对象之间的交互都通过中介者来完成,这样,对象与对象之间的联系就变得比较弱了,当对象发生变化的时候,这种关系也就是不至于变得太难以处理。
中介者模式的具体实现
这里,我们通过一个简单的购房模型来实现中介者模式,以便更好地理解中介者模式
/** * 中介者类 */public class Mediator { // 包含多种不同类型的用户:销售者以及购买者 private List<HouseProvider> houseProviders = new ArrayList<>(); private List<Client> clients = new ArrayList<>(); public void register(HouseProvider houseProvider){ houseProviders.add(houseProvider); } public void addClient(Client client){ clients.add(client); } // 出售房子 public void sellingHouse(String providerName, Client client){ for (HouseProvider houseProvider : houseProviders){ if (houseProvider.getName().equals(providerName)){ houseProvider.sellHouse(); client.reply("yes"); return; } } client.reply("no"); }}/** * 房屋出售者 */abstract class HouseProvider{ protected Mediator mediator; protected String name; public String getName() { return name; } public HouseProvider(Mediator mediator, String name) { this.mediator = mediator; this.name = name; mediator.register(this); } public abstract void sellHouse();}class HouseProviderOne extends HouseProvider{ public HouseProviderOne(Mediator mediator, String name) { super(mediator, name); } @Override public void sellHouse() { System.out.printf("%s selling house\n", name); }}class HouseProviderTwo extends HouseProvider{ public HouseProviderTwo(Mediator mediator, String name) { super(mediator, name); } @Override public void sellHouse() { System.out.printf("%s selling house\n", name); }}/** * 客户 */class Client{ private Mediator mediator; private String name; public Client(Mediator mediator, String name) { this.mediator = mediator; this.name = name; mediator.addClient(this); } public void buyHouse(String providerName){ System.out.printf("Do you selling house %s\n",providerName); mediator.sellingHouse(providerName, this); } public void reply(String msg){ System.out.printf("Get the reply %s\n", msg); }}
从上面可以看到,客户类并没有直接跟出售房屋的类直接交互,而是通过中介者来进行协调,这样子的好处在于,客户不需要直接跟出售者进行交互,关于出售者的很多信息客户并不需要知道,反过来也是同理。
总结
中介者模式,主要用于关系比较复杂的系统中进行关系的解耦,将网状的关系网拆解成由中介者进行协调的星型结构,好处是降低了各个对象之间的耦合度,不过也带来了对应的问题,中介者所需要处理的事情比较多。
阅读全文
0 0
- 设计模式之中介者
- 设计模式 之 中介者
- 设计模式之中介者
- 设计模式之Mediator中介者模式
- 设计模式之中介者模式
- 设计模式之中介者模式
- 八 设计模式之中介者模式
- 设计模式之--中介者模式
- 设计模式之中介者模式
- c++设计模式之中介者模式
- 设计模式之-中介者模式
- 设计模式之中介者模式
- c++设计模式之中介者模式
- 设计模式之中介者模式(Mediator)
- 设计模式之中介者模式
- 设计模式之中介者模式
- JAVA-设计模式之中介者模式
- 大话设计模式之中介者模式
- RabbitMQ之arguments参数
- JS最新手机号码检验正则表达式
- 【备忘】2017北京黑马19期javaee+大数据 【完整版】含解压密码
- 十二、深入理解JSX
- js模拟实现重载
- 设计模式之中介者模式
- 端口分类调研
- OC与swift相互调用
- 在python的web框架Django中使用SQL Server
- amaze ui日期选择器
- 初级中级高级iOS的一些面试题
- WEB前端使用 webpack + reack 搭建框架 01 基础框架
- PHP开发接口使用RSA进行加密解密方法
- <NOIP> 17 . P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…