中介者模式(Mediator)

mediator中介者模式简介:

为什么需要中介者模式?

在面向对象的软件开发过程中,根据“单一职责原则”,我们应该尽量将对象细化,使其只负责或呈单一职责。对于一个模块和系统,可能由多个对象构成,这些对象之间可能存在相互调用的情况,这样会复杂化对象之间的联系,大量的相互连接使得一个对象似乎不太可能在没有其他对象支持的情况下独立完成工作,所有的对象变成了一个不可分割的整体,对系统或模块的任何较大的变动都变得十分的困难。 为了减少两个对象之间的复杂引用关系,使之成为一个送耦合的系统,这时间中介则模式就出现了。

中介者的作用是什么?

由上述的描述可知,中介者模式的作用主要是为了降低模块内部之间类的相互引用,防止出现系统或模块内部过度耦合。

中介者模式的设计思路:

用一个中介对象来封装一系列的对象交互操作,中介者模式使得对象之间不需要显示的相互引用,从而使得系统或模块内部相互解耦,而且可以独立的改变它们至今的交互。中介者模式也称为调停者模式

中介者模式的具体实现

抽象中介者(Mediator):中介者定义一个接口用于与各同事(Colleague)对象通信。
具体中介者(ConcreteMediator): 具体中介者通过协调各同事对象实现协作行为。了解并维护它的各个同事。
抽象同事类(Colleague class): 定义同事类接口,定义各同事的公有方法.
具体同事类(ConcreteColleague): 实现抽象同事类中的方法。每一个同时类需要知道中介者对象;每个具体同事类只需要了解自己的行为,而不需要了解其他同事类的情况。每一个同事对象在需与其他的同事通信的时候,与它的中介者通信。

中介者的作用展示:


01151528-fc065a2c7d4049e19cfe0309827bc7c9.jpg

中介者的设计思路:


01151529-243cb8f6709f4018b2d3ad1f31094914.png

终结者的优缺点:

优点:

  1. 简化了对象之间的关系,将系统内部的各个对象之间的交互进行了封装,使得各个类之间关系解耦,使得系统成为低耦合系统。
  2. 减少子类的生成。
  3. 较少同事类的设计和实现。

缺点:

由于中介者对象封装了各个类之间的交互,会导致中介者类本身的复杂性上升,中介者类本身的维护会变得复杂

总结

中介者模式通过引入中介者对象,将系统内部的结构由网状结构转化为星状结构,使得系统中有关对象引用其它的对象的数量减少到最少,简化了系统结构,降低了系统内部的耦合,将系统内部的结构由网状结构转化为星状结构,中介者对象起到了中转调和的作用,但是由于中介者对象本身需要整理系统内部的对象之间的交互,会导致其本身会变得臃肿和复杂,进而变得难以维护”,故在使用中介者模式前需要详细考虑所设计的系统是否适合使用中介者模式,及中介者类本身的设计。

你可能感兴趣的:(中介者模式(Mediator))