设计模式之中介者模式

发布时间 2024-01-13 17:33:27作者: 当时明月在曾照彩云归

1. 定义

多个对象之间通过一个中介者对象进行通信和协作,而不是直接相互交互

2. 口语化表述

中介,这在生活中很常见,比如租房中介

通常,有住房出租的房东有很多,需要租房的租客也很多,但是租客难以直接联系房东,这个时候租房中介这个职业就出现了

房东将房屋登记到中介这里,租客来中介这里找房看房,这效率就提高了不少

这就是中介者模式,建立一个中间人,用以联系需要交流的双方(通常双方是一个群体,数量较多,例如房东与租客)

下面的描述会沿用这个上述这个场景

3. 源码示例

在前端框架中,比如Vue.js或者React,它们的状态管理工具(如Vuex或者Redux)就可以被视为中介者模式的一种实现

这些状态管理工具负责管理应用的状态并提供了一种统一的方式来处理状态的变化,从而减少了组件之间的直接通信,降低了耦合度,提高了系统的可维护性

4. 总结

4.1 设计优点

  • 单一职责原则

    将多个组件间的交流抽取到同一位置,使其更易于理解和维护

  • 开闭原则

    在上述租房示例中,新的房东加入与新的租客加入,都只需告诉中介即可

4.2 适用场景

  • 一些对象和其他对象紧密耦合以致难以对其进行修改时

    比如,Vue组件之间如果互相紧密耦合,那么后续修改起来异常艰难,可以考虑引入Vuex等全局状态管理工具担任中间人

5. 参考资料

[1] 中介者设计模式 (refactoringguru.cn)

[2] Vuex 是什么? | Vuex (vuejs.org)