场景
- 在实际的公司运营中,都有一个总经理来协调管理各个部门。那么这里的总经理起到中介、协调的作用。这是一个典型的中介者模式
核心
- 如果一个系统中对象之间的联系呈现为网状结构,对象之间存在大量 多对多关系,将导致关系及其复杂,这些对象称之为同事对象
- 我们可以引用一个中介者对象,使各个同时对象只跟中介者对象打交道,将复杂的网络结构化解为星形结构
结构图
代码解析
我们通过模拟公司日常运营中,总经理和各个部门之间处理事情场景,来用代码实现中介者模式
定义同事类(部门接口和具体部门)
1 | /** |
中介者(总经理接口和具体实现)
1 | /** |
调用
1 | public class Client { |
结果:
跑项目!
汇报工作!项目承接的进度,需要资金支持!
数钱!
中介者模式的本质
- 解耦多个同事对象之间的交互关系。每个对象都持有中介者对象的引用,只跟中介者对象打交道。我们通过中介者对象统一管理这些交互关系
开发中常见的场景:
- MVC模式(其中的C,控制器就是一个中介者对象。M和V都和他打交道)
- 窗口游戏程序,窗口软件开发中窗口对象也是一个中介者对象
- 图形界面开发GUI中,多个组件之间的交互,可以通过引入一个中介者对象来解决,可以使整体的窗口对象或者DOM对象
- java.lang.reflect.Method#invoke()
注:该博文为学习总结,视频来源为高淇java300集