传统的方式的问题分析:
1)
当各电器对象有多种状态改变时,相互之间的调用关系会比较复杂。
2)
各个电器对象彼此联系,
你中有我,我中有你,不利于松耦合。
3)
各个电器对象之间所传递的消息
(
参数
)
,容易混乱。
4)
当系统增加一个新的电器对象时,或者执行流程改变时,代码的可维护性、扩展性
都不理想 -->
就
考虑
中介者模式。
4)
如果对象之间存在多对多的关系,我们就可以引入中介者模式,使各个对象之间的联系是通过这个中介者来完成。
介绍:
1)
中介者模式(
Mediator Pattern
)
,用一个中介对象来封装一系列的对象交互。中介者使各个对象不需要显式地相互引用,从而使其松耦合,而且可以独立地改变它们之间的交互。
2)
中介者模式属于行为型模式,使代码易于维护。
3)
比如
MVC
模式,
C
(
Controller
控制器)是
M
(
Model
模型)和
V
(
View
视图)的中介者,在前后端交互时起到了中间人的作用。
中介者模式的原理-->UML类图:
![](https://i-blog.csdnimg.cn/blog_migrate/f97de28ce5edeb69ceb5329968fbee04.png)
中介者模式-->UML类图:
![](https://i-blog.csdnimg.cn/blog_migrate/af30347bda833ef36c91474fbea41d5d.png)
核心代码:
![](https://i-blog.csdnimg.cn/blog_migrate/1c1144f04b457718d6153053d0681030.png)
![](https://i-blog.csdnimg.cn/blog_migrate/a7301642630d80ee856f0e69d80ec763.png)
![](https://i-blog.csdnimg.cn/blog_migrate/d22ba9e5180e4246bc6c9af4300eddc8.png)
![](https://i-blog.csdnimg.cn/blog_migrate/63e71475a0e92ed574c25b8ce4b4c3b2.png)
![](https://i-blog.csdnimg.cn/blog_migrate/326986320b53fc3a6059708baf5dffbe.png)
![](https://i-blog.csdnimg.cn/blog_migrate/0e7ad00095ad114824b8ef71659905e7.png)
![](https://i-blog.csdnimg.cn/blog_migrate/b1501d8b002d82f51a6ef57028567738.png)
![](https://i-blog.csdnimg.cn/blog_migrate/646518f0af061c58a69ca166299a6863.png)
中介者模式的注意事项和细节:
1)
多个类相互耦合,会形成网状结构
,
使用中介者模式将网状结构分离为星型结构,进行解耦。
2)
减少类间依赖,降低了耦合,符合迪米特原则。
3)
中介者承担了较多的责任,一旦中介者出现了问题,整个系统就会受到影响。
4)
如果设计不当,中介者对象本身变得过于复杂,这点在实际使用时,要特别注意。