定义:
用一个中介者对象来封装一系列的对象交互。 中介者使各对象不需要显示地相互引用, 从而使得耦合松散,而且可以独立地改变它们之间的交互
eg:
1)国家之间的冲突,需要联合国的调停
2)飞机场的管制
3)交通管制
4)ios 上面的UIViewcontroller 如何去展示
情况: 尽管一个系统分割成为许多对象通常可以增加其复用性,但是对象之间相互连接的激增又会降低其可复用性
这种,就必须要思考使用了迪米特原则。
实际生活的一个例子好处: 中介者引入,使得系统的结构不会因为新对象的引入造成大量的修改工作。
中介者模式优缺点
中介者模式很容易在系统中应用, 也很容易在系统中误用。 当系统出现了“多对多”交互复杂的对象群时候,不要着急使用中介者模式,而要先反思你的系统在设计上是不是合理。
优点:
1) Mediator 的出现减少了各个Colleague的耦合,,使得可以独立的改变和复用各个colleague类和Mediator 。
2)由于把对象如何协作进行了抽象,将中介者作为一个独立的概念并将其封装在一个对象中,这样关注的对象就从对象各个本身的行为转移到了它们之间的交互上来,也就是站在一个宏观的角度去看到系统。
缺点:
由于ConcreteMediator 控制了集中化, 于是就把交互复杂性质变为了中介者的复杂性, 这就使得中介者变得比任何一个ConcreteColleague都复杂。 【要注意避免庞大】
使用情况:
一组对象以定义良好但是复杂的方式进行通信的场合。
对象间的交互虽定义明确然而非常复杂,导致一组对象彼此相互依赖而且难以理解。
因为对象引用了许多其他对象并与其通讯,导致对象难以复用。
想要定义一个分布在多个类中的逻辑行为,又不想生成太多子类。
PS : (1)对象相互依赖,交互复杂 (2)不想生成太多子类
网友评论