### 中介者模式
用一個中介對象來封裝一系列的對象交互。中介者使各對象不需要顯示的相互引用,從而使其耦合松散,而且可以獨立改變它們之間的交互。(摘抄)
中介者模式就相當與把對象與對象之間的耦合轉移到自己身上。讓事物與事物之間都通過一個中介去聯系,例如租房子,找中介公司,那么你就是與中介公司耦合,而不是與房東,而房東也是與中介公司耦合。
~~~
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)男人和女人——訪問者模式