概念
定义一个中介者对象, 封装一系列对象的交互关系, 使得各对象不必显示的相互引用,
从而使其耦合松散, 而且可以独立的改变它们的交互.
实现
以智能家居为例,小爱控制只能家居。
类图
代码
- SmartDevice 智能设备抽象
1 | package com.littlehui.design.mediator; |
- SmartMediator 中介者
1 | package com.littlehui.design.mediator; |
MusicDevice 智能播放器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22package com.littlehui.design.mediator;
/**
* @Description TODO
* @ClassName MusicDevice
* @Author littlehui
* @Date 2020/4/9 18:15
* @Version 1.0
**/
public class MusicDevice extends SmartDevice {
public void operateDevice(String instruction,SmartMediator mediator) {
System.out.println("音乐设备"+instruction);
mediator.music(instruction);
}
public void readyState(String instruction) {
System.out.println("音乐设备准备"+instruction);
}
}CurtainDevice 智能窗帘
1 | package com.littlehui.design.mediator; |
- BathDevice 洗浴室
1 | package com.littlehui.design.mediator; |
- Xiaoai 具体中介者 小爱
1 | package com.littlehui.design.mediator; |
- Client 客户端
1 | package com.littlehui.design.mediator; |
- 执行结果
1 | Connected to the target VM, address: '127.0.0.1:60536', transport: 'socket' |
场景
当有多个对象彼此间相互交互的时候,自然就会想到对象间的耦合度过高,解决办法就是封装对象间的交互行为,因此就能想到中介者模式就是干这行的。
总结
中介者的核心是抽离依赖关系。通过依赖关系来描述整个业务场景。使得复杂的逻辑可以内聚。
- 中介者模式优点
- 通过让对象彼此解耦,增加对象的复用性
- 通过将控制逻辑集中,可以简化系统维护
通过中介者使一对所变成了一堆一,便于理解
- 缺点
- 如果设计不好,引入中介者会使程序变的复杂
- 中介者承担过多责任,维护不好会出大事