中介者模式
前言
中介者模式(Mediator Pattern)通过在中间引入一个层,实现对象的解耦,以便对象之间的交互通过该层发生。
主要角色:
- 中介者(Mediator):一个接口,主要用于提供注册同事对象与转发同事对象信息的抽象方法。
- 同事(Colleague):一个接口,主要用于存储中介者对象,提供与具体同事对象进行交互的抽象方法,实现所有相互影响的具体同事类的公共功能。
- 具体同事(Concrete Colleague):实现同事接口的类,只知道自己的行为,不了解其他具体同事类的情况,但它们都认识中介者对象。
- 具体中介者(Concret Mediator):实现中介者接口的类,主要用于封装多种组件间的关系。具体中介者通常会存储所有组件的引用并对其进行管理,有时甚至会对其生命周期进行管理。
优点
- Mediator 将原本分布于多个对象间的行为集中在一起,作为一个独立的概念并将其封装在一个对象中,简化了对象之间的交互。
- 将多个调用者与多个实现者之间多对多的交互关系,转换为一对多的交互关系,一对多的交互关系更易于理解、维护和扩展,大大减少了多个对象之间相互交叉引用的情况。
缺点
- 中介者承接了所有的交互逻辑,交互的复杂度转变成了中介者的复杂度,中介者类会变得越来越庞大和复杂,以至于难以维护。
- 中介者出问题会导致多个使用者同时出问题。