行为型模式
责任链模式
- 有一个线状流水线,能处理不同的工序,配置请求参数来选择流水线的处理工序
- 个人思考
- 为什么不用分支的方式,把所有的工序都做成成套的流水线呢,非要把不同工序合成一个流水线呢
- 如果做出所有的分支会很麻烦,那么就用责任链
- 和命令模式的不同
- 单个和链式多个
- 为什么不用分支的方式,把所有的工序都做成成套的流水线呢,非要把不同工序合成一个流水线呢
命令模式
- 控制器发出抽象的命令,接收器响应命令
- 运行时更换命令对象就可以切换接收器
- 可以用在撤销操作上
- 个人思考
- 命令模式和备忘录模式区别
- 范围不同
- 命令模式改变对象的某些状态,通过命令给出操作,通过执行操作,撤销操作完成状态变化
- 备忘录记录对象的全部状态,通过恢复全部的状态,完成变化
- 范围不同
- 适用
- 命令模式增量改变,消耗小,快速,对逻辑操作要求多
- 备忘录模式记录所有数据,消耗大,慢,对逻辑操作要求低
- 命令模式和桥接模式区别
- 一种是行为,一种是结构
- 桥接模式绑定操作对象,执行对象,如果不更换,响应的对象收到外部控制,一般选择响应对象后一直用这些对象
命令模式,不确定用那些响应对象,在运行时经常变换,相同命令可能发往不同响应对象
- 命令模式和备忘录模式区别
解释器模式
- 不常用,在各个需要解释语法的领域都有最佳实践方案,不需要解释器
- 主要用于表达式解释,构建规则引擎
迭代器模式
- 又称光标模式,基本和光标的操作一致
- 提供跟具体实现无关的对集合的操作,遍历,获取特定位置元素,添加,删除
- 强化容器的抽象,隔离容器的内部实现
中介者模式
- 适用1:一组对象有着标准的通信方式,互相通信
- 衷告1:中介者模式在应用的时候会让问题越来越复杂,所以最好只让中介者处理互相通知的部分,不含有业务代码
- 扩展方式:通过继承中介者拓展新的功能,一般是增加同事
- 个人理解
- 不同类间的耦合代码挪出去到一个专门的类里面
- 属于增加中间层解耦
- 个人思考
- 和观察者模式的区别
- 中介者中,同事关系在编译时就确定了
- 观察者模式通过运行时增加观察者拓展功能
- 和观察者模式的区别
备忘录模式
- 对象提供获取,恢复其状态的方法供外部控制对象使用
观察者模式
- 一对多的状态变化通知,observable and observer
状态模式
- 相同的输入,不同的响应,一些状态变化和输入会导致响应部分切换
策略模式
- 提供一种计算方法,对数据的操作方式
- 和状态模式的区别
- 策略由外部程序配置,状态由一系列状态自己控制
模板方法模式
- 一系列固定的工序和操作,流程或者一些是固定的,剩余的会有各自的表现,在父类中定义操作,并且让子类去实现
访问者模式
- 一种外部的策略模式,策略通过参数传递,不跟对象关联
- 适合情况,被访问的数据基本不变,对相同数据有不同处理方式的类变化较多