Java设计模式——中介者模式
- 需求——智能家居
1)智能家庭包括各种设备:闹钟、咖啡机、电视机、窗帘等。
2)主人要看电视时,各个设备可以协同工作,自动完成看电视的准备工作,比如流程为:闹铃响起——咖啡机开始做咖啡——窗帘自动落下——电视机开始播放。 - 案例——租房子
- 类图(传统方式)
- 类图(引入中介者)
- 传统模式
-
类图
-
问题分析
1)当各个电器对象有多重状态改变时,相互之间的调用关系会比较复杂。
2)各个电器对象彼此联系,你中有我,我中有你,不利于松耦合。
3)各个电器对象之间所传递的消息(参数),容易混乱。
4)当系统增加一个新的电器对象时,或者执行流程改变时,代码的可维护性、扩展性都不理想——>考虑 中介者模式。
-
- 中介者模式
-
基本介绍
1)中介者模式(Mediator Pattern),用一个中介对象来封装一系列的对象交互。
中介者使各个对象不需要显示地互相引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
2)中介者模式属于行为型模式,使代码易于维护。
3)比如MVC模式,C(Controller控制器)是M(Model模型)和V(View视图)的中介者,在前后端交互时起到了中间人的作用。 -
类图
-