18.命令模式,将请求封装成对象,从而将不同的请求把客户端参数化,提供命令的撤销和恢复
优点:类间解耦;可扩展性
场景:有命令的场景
应用方法:Invoker是调用者(司令员),Receiver是被调用者(士兵),MyCommand是命令,实现了Command接口,持有接收对象
19.备忘录模式,在一个对象外保存该对象的某个状态
优点:
场景:需要备份恢复的场景;数据库连接的事务管理
应用方法:Memento类是备忘录类,Storage类是存储备忘录的类
20.状态模式,当对象的状态改变时,同时改变其行为
优点:结构清晰;封装性好
场景:行为随状态改变,权限控制;条件判断
应用方法:状态类,Context类可以实现切换
21.访问者模式,数据结构和作用于结构上的操作解耦合
优点:1,单一职责原则;2,扩展性好;3,灵活性高;4,功能集中化
场景:业务要求遍历多个不同的对象
应用方法:访问者和具体元素
22.中介者模式,用一个中介对象封装一系列的对象交互
优点:松耦合
场景:1,调度中心,网状结构;2,MVC框架
应用方法:类类之间的关系及调度交给Mediator
23.解释器模式,定义解释器,解释语言的句子
优点:扩展性好
场景:重复发生的问题;简单语法解释。缺点很多,尽量减少使用
应用方法:抽象解释器,具体表达和环境角色(定义变量)