### 中介者模式
用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示的相互引用,从而使其耦合松散,而且可以独立改变它们之间的交互。(摘抄)
中介者模式就相当与把对象与对象之间的耦合转移到自己身上。让事物与事物之间都通过一个中介去联系,例如租房子,找中介公司,那么你就是与中介公司耦合,而不是与房东,而房东也是与中介公司耦合。
~~~
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;
}
@Override
public void send(String message, Person person) {
// TODO Auto-generated method stub
if (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("好");
}
}
~~~
中介的出现,减少了原本有交集的两个对象在程序中的耦合,使得其可以独立发生改变和复用。
同时由于中介的控制集中化,于是把复杂的操作全部都转移到了中介中,这就造成中介十分复杂。
中介模式一般应用于一组对象以定义良好但是复杂的方式进行通信的场合,或者想定制一个分步在多个类中的行为,而又不想生成太多的子类的场合.
- 前言
- (1)代码无错就是优?——简单工厂模式
- (2)商场促销——策略模式
- (3)&(4)&(5) 设计模式原则
- (6)穿什么有这么重要?——装饰模式
- (7)为别人做嫁衣——代理模式
- (8)雷锋依然在人间——工厂方法模式
- (9)简历复印——原型模式
- (10)考题抄错会做也白搭——模板方法模式
- (11)迪米特法则
- (12)牛市股票还会亏钱?—— 外观模式
- (13)好菜每回味不同——建造者模式
- (14)老板回来,我不知道——观察者模式
- java实现事件委托
- (15)就不能不还DB吗?—— 抽象工厂模式
- (16)无尽加班何时休息——状态模式
- (17)在NBA我需要翻译——适配器模式
- (18)如果再回到从前——备忘录模式
- (19)分公司=部门——组合设计模式
- (20)想走?可以!先买票——迭代器模式
- (21)有些类也需计划生育——单例模式
- (22)手机软件何时统一——桥接模式
- (23)烤羊肉串引来的思考——命令模式
- (24)加薪非要老总批?——职责链模式
- (25)世界需要和平——中介者模式
- (26)项目多也别傻做——享元模式
- (28)男人和女人——访问者模式