《大话设计模式》—— 读后感(25)世界需要和平——中介者模式
来源:互联网 发布:淘宝禁品暗号大全 编辑:程序博客网 时间:2024/05/01 22:20
中介者模式
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立改变它们之间的交互。(摘抄)
中介者模式就相当与把对象与对象之间的耦合转移到自己身上。让事物与事物之间都通过一个中介去联系,例如租房子,找中介公司,那么你就是与中介公司耦合,而不是与房东,而房东也是与中介公司耦合。
public abstract class Mediator{public abstract void send(String message ,Person person);}public abstract class Person{Mediator mediator;public Person(Mediator mediator){this.mediator = mediator;}public abstract void send(String message);public abstract void notify(String message);}public class HouseMediator extends Mediator{private Person renter;private Person tenant;public void setRenter(Person renter) {this.renter = renter;}public void setTenant(Person tenant) {this.tenant = tenant;}@Overridepublic void send(String message, Person person) {// TODO Auto-generated method stubif (person == tenant){renter.notify(message);}else {tenant.notify(message);}}}public class Renter extends Person{public Renter(Mediator mediator) {super(mediator);// TODO Auto-generated constructor stub}public void send(String message){mediator.send(message, this);}public void notify(String message){System.out.println("Renter"+message);}}public class Tenant extends Person{public Tenant(Mediator mediator) {super(mediator);// TODO Auto-generated constructor stub}public void send(String message){mediator.send(message, this);}public void notify(String message){System.out.println("Tenant"+message);}}class Client{public static void main(){HouseMediator houseMediator = new HouseMediator();Person tenant = new Tenant(houseMediator);Person renter = new Renter(houseMediator);houseMediator.setRenter(renter);houseMediator.setTenant(tenant);renter.send("交房租");tenant.send("好");}}
中介的出现,减少了原本有交集的两个对象在程序中的耦合,使得其可以独立发生改变和复用。
同时由于中介的控制集中化,于是把复杂的操作全部都转移到了中介中,这就造成中介十分复杂。
中介模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,或者想定制一个分步在多个类中的行为,而又不想生成太多的子类的场合.
0 0
- 《大话设计模式》—— 读后感(25)世界需要和平——中介者模式
- 大话设计模式--第25章 世界需要和平—中介者模式
- 《大话设计模式》--世界需要和平--中介者模式<Mediator>(25)
- 设计模式:25 世界需要和平_中介者模式
- 大话设计模式—中介者模式
- 大话设计—中介者模式
- 第二十五章 世界需要和平--中介者模式(读书笔记)
- 【结构型模式】《大话设计模式》——读后感 (12)在NBA我需要翻译?——适配器模式
- 《大话设计模式》 —— 读后感 (11)迪米特法则
- 《大话设计模式》—— 读后感(17)在NBA我需要翻译——适配器模式
- 大话设计模式25----中介者模式
- 《大话设计模式》—— 读后感(19)分公司=部门——组合设计模式
- 《大话设计模式》——读后感 (3)&(4)&(5) 设计模式原则
- 《大话设计模式》——读后感 (2)商场促销——策略模式
- 《大话设计模式》—— 读后感 (7)为别人做嫁衣——代理模式
- 《大话设计模式》—— 读后感 (9)简历复印——原型模式
- 《大话设计模式》—— 读后感 (10)考题抄错会做也白搭——模板方法模式
- 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式
- 深入Java单例
- 用Python快速开发CAM程序(1)
- SpringMVC报错The request sent by the client was syntactically incorrect ()
- spring MVC 快速入门
- maven
- 《大话设计模式》—— 读后感(25)世界需要和平——中介者模式
- hdu 1003 解题报告
- java发送http的get、post请求
- SCU 4371 Interesting matrix
- 各种浏览器classid
- 成为Java GC专家(4):Apache的MaxClients参数及其对Tomcat执行Full GC的影响
- linux下svn命令大全
- 如何在Windows下搭建Android开发环境
- C++的一般引用及其数组引用