设计模式之中介者模式
2016-10-04 23:57
197 查看
设计模式目录
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
抽象中介者角色定义统一接口,用于各同事角色之间的通信
具体中介者角色 Concrete Mediator
具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色
同事角色 Colleague
每一个同事角色都知道中介者角色,而且与其他的同事角色通信时候,一定要通过中介者角色协作。
http://blog.csdn.net/fenglailea/article/details/52733435
风.fox
中介者模式 Mediator patten
用一个中介对象封装一系列的对象交互,中介者是各个对象不需要显示地相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互通用类图
组成
抽象中介者角色 Mediator抽象中介者角色定义统一接口,用于各同事角色之间的通信
具体中介者角色 Concrete Mediator
具体中介者角色通过协调各同事角色实现协作行为,因此它必须依赖于各个同事角色
同事角色 Colleague
每一个同事角色都知道中介者角色,而且与其他的同事角色通信时候,一定要通过中介者角色协作。
案例
JAVA// 抽象中介者 public abstract class Mediator{ // 定义同事类 protected ConcreteColleague1 c1; protected ConcreteColleague2 c2; // 通过getter/setter方法把同事类注入进来 public ConcreteColleague1 getc1(){ return c1; } public ConcreteColleague2 getc2(){ return c2; } public void setC1(ConcreteColleague1 c1){ this.c1=c1; } public void setC2(ConcreteColleague2 c2){ this.c2=c2; } // 中介者模式的业务逻辑 public abstract void doSomething1(); public abstract void doSomething2(); } //中介者 public class ConcreteMediator extends Mediator{ // 中介者模式的业务逻辑 public abstract void doSomething1(){ super.c1.selfMethod1(); super.c2.selfMethod2(); } public abstract void doSomething2(){ super.c1.selfMethod1(); super.c2.selfMethod2(); } } // 抽象同事类 public abstract class Colleague{ protected Mediator mediator; public Colleague(Mediator _mediator){ this.mediator=_mediator; } } // 同事类 public class ConcreteColleague1 extends Colleague{ //通过构造函数传递中介者 pubic ConcreteColleague1(Mediator _mediator)){ super(_mediator); } //自有方法 public void selfMethod1(){ ... } // 依赖方法 public void depMethod1(){ ... // 自己不能处理的业务逻辑,委托给中介者处理 super.mediator.doSomething(); } } public class ConcreteColleague2 extends Colleague{ //通过构造函数传递中介者 pubic ConcreteColleague2(Mediator _mediator)){ super(_mediator); } //自有方法 public void selfMethod2(){ ... } // 依赖方法 public void depMethod2(){ ... // 自己不能处理的业务逻辑,委托给中介者处理 super.mediator.doSomething(); } }
优点
就是减少类间的依赖,把原有的一对多的依赖变成了一对一的依赖,同事类只能依赖中介者,减少了依赖,当然同时也降低了类间的耦合缺点
中介者会膨胀得很大,而且逻辑复杂,原本N个对象直接的相互依赖关系转换为中介者和同事类的依赖关系,同事类越多,中介者的逻辑就越复杂使用场景
中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网结构。在这种情况下一定要考虑使用中介者模式,这有利于把蜘蛛网梳理为星型结构,使原本复杂混乱的关系变得更清晰简单相关文章推荐
- 设计模式笔记(二十一) —— 中介者模式
- 设计模式学习笔记--Mediator 中介者模式
- 设计模式--中介者模式(Mediator)
- 设计模式--中介者模式(Mediator)
- 搞定设计模式3之中介者模式
- 设计模式——中介者模式
- 设计模式笔记--行为型模式之五--中介者
- 设计模式笔记 16. Mediator 中介者模式(行为型模式)
- 设计模式--中介者模式(Mediator)
- 设计模式学习(十三)迭代器模式-中介者模式
- 设计模式之Mediator(中介者)
- 设计模式之Mediator(中介者)
- 设计模式通俗演义(一)----中介者模式
- 设计模式之Mediator(中介者)
- 设计模式袖珍版 连续转载之 - Mediator(中介者)
- 设计模式之Mediator(中介者)
- 乐在其中设计模式(C#) - 中介者模式(Mediator Pattern)
- 设计模式之五——中介者模式
- [导入]C#面向对象设计模式纵横谈(17):(行为型模式) Mediator 中介者模式.zip(8.75 MB)
- 设计模式(21)-中介者模式(Mediator)