中介模式
什么是中介模式
用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变他们之间的交互。中介模式又称为调停模式
设计思想
多个类很容易相互耦合,形成网状结构(相互调用,不利于变动,逻辑也较为难懂),中介模式的作用就是将这种网状结构分离成星形结构(一个中介类作为业务中心,边缘类只关心自身业务即可,中介类只关心调用逻辑即可),业务流畅
设计要点
最主要的就是找到并区分好三种角色
- 交互对象:要进行交互的一系列对象,如租房时的租客,交易所的股民
- 中介者:负责协调各个对象之间的交互,如房产中介,证券交易所
- 具体中介者:中介的具体实现
优缺点
优点:
- 中介将原本分布于多个对象间的行为集中在一起,作为一个独立的概念并将其封装在一个对象中,简化了对象之间的交互
- 将多个调用者和多个实现者之间的多对多的交互关系,转换为一对多的交互关系,一对多的交互关系更易于理解、维护和扩展,大大减少了多个对象之间相互交叉引用的情况
缺点:
- 中介者承接了所有的交互逻辑,交互的复杂度转变成了中介者的复杂度,中介者类会变得越来越庞大和复杂,以至于难于维护
- 中介者出现问题会导致多个使用者同时出问题
应用场景
- 一组对象以定义良好但复杂的方式进行通信,产生的相互依赖关系结构混乱且难以理解
- 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象
- 想通过一个中间类来封装多个类中的行为,同时又不想生成太多子类