设计模式之行为型(5)
2023-09-11 本文已影响0人
宏势
不常用行为类模式:1.访问者模式 2.解释器模式 3.命令模式 4.备忘录模式 5.中介模式
一、访问者模式
1.一句话描述
当要为对象的组合增加新的能力,可以引入访问者,组合的执行算法可以随访问者改变而改变
2.类图
image.png3.总结
- 访问者模式为组合结构加入新的操作,而无需修改结构本身
- 打破组合结构封装,结构变更,所有访问者都得变更(对组合结构的变更困难)
访问者模式违反了迪米特原则、依赖倒置原则
二、解释器模式
1.一句话描述
- 用来解释执行语法句子
2.类图
image.png3.实战案例
- 主要用于表达式或者语法解析执行
4.总结
- 如果语法相对比较复杂,需要用编译器
- 该模式平时比较少用
三、命令模式
1.一句话描述
- 将一个请求封装成一个对象,解耦f请求者和执行请求者,让它们通过命令对象通讯
2.类图
image.png3.实战案例
- 餐厅点餐服务员和大厨之间通信可以用命令模式
4.总结
- 1.命令模式将调用者和执行者分开,降低耦合度
- 3.命令模式可以扩展支持命令的撤销恢复,请求命令排队、组合命令等
- 3.如果命令很多,不管命令多简单,需要创建大量的命令类
四、备忘录模式
1.一句话描述
- 能让对象返回到之前的状态
2.类图
image.png3.实战案例
- 文本编辑器撤销功能
- 游戏中的存档功能
4.总结
- 1.备忘录类,维护一个目标对象的状态
- 2.备忘录管理类,维护一个备忘录对象的集合,提供添加,删除和获取功能 ,但不能对备忘录里面内容进行修改
五、中介者模式
1.一句话描述
中介模式用来集中相关对象之间的复杂的沟通和控制方式,也叫调停模式
2.类图
image.png3.实战案例
- 生活中的房产中介就是典型的中介者模式
- MVC 框架中的控制器(controller)就是模式(model)和视图(view)的中介者
- 电脑cpu,内存,显卡、硬盘 都经过电脑主板进行交互,电脑主板相当是中介者,也是一种中介者模式
4.总结
- 引入中介者,将相关对象彼此解耦,降低耦合
- 引入中介者,将控制逻辑集中,简化系统
由于中介者承担了大部分逻辑,有可能导致中介者类变得复杂,难以维护
门面模式VS中介者模式,门面是为复杂系统提供一个统一的访问界面,他定义的是一个高层接口,无需知道复杂系统的细节, 而中介者模式是提供一个中介对象来封装一系列对象的交互行为,让各对象之间耦合松散