设计模式总结 行为型模式

行为型模式

责任链模式

  • 有一个线状流水线,能处理不同的工序,配置请求参数来选择流水线的处理工序
  • 个人思考
    • 为什么不用分支的方式,把所有的工序都做成成套的流水线呢,非要把不同工序合成一个流水线呢
      • 如果做出所有的分支会很麻烦,那么就用责任链
    • 和命令模式的不同
      • 单个和链式多个

命令模式

  • 控制器发出抽象的命令,接收器响应命令
  • 运行时更换命令对象就可以切换接收器
  • 可以用在撤销操作上
  • 个人思考
    • 命令模式和备忘录模式区别
      • 范围不同
        • 命令模式改变对象的某些状态,通过命令给出操作,通过执行操作,撤销操作完成状态变化
        • 备忘录记录对象的全部状态,通过恢复全部的状态,完成变化
    • 适用
      • 命令模式增量改变,消耗小,快速,对逻辑操作要求多
      • 备忘录模式记录所有数据,消耗大,慢,对逻辑操作要求低
    • 命令模式和桥接模式区别
      • 一种是行为,一种是结构
      • 桥接模式绑定操作对象,执行对象,如果不更换,响应的对象收到外部控制,一般选择响应对象后一直用这些对象
        命令模式,不确定用那些响应对象,在运行时经常变换,相同命令可能发往不同响应对象

解释器模式

  • 不常用,在各个需要解释语法的领域都有最佳实践方案,不需要解释器
  • 主要用于表达式解释,构建规则引擎

迭代器模式

  • 又称光标模式,基本和光标的操作一致
  • 提供跟具体实现无关的对集合的操作,遍历,获取特定位置元素,添加,删除
  • 强化容器的抽象,隔离容器的内部实现

中介者模式

  • 适用1:一组对象有着标准的通信方式,互相通信
  • 衷告1:中介者模式在应用的时候会让问题越来越复杂,所以最好只让中介者处理互相通知的部分,不含有业务代码
  • 扩展方式:通过继承中介者拓展新的功能,一般是增加同事
  • 个人理解
    • 不同类间的耦合代码挪出去到一个专门的类里面
    • 属于增加中间层解耦
  • 个人思考
    • 和观察者模式的区别
      • 中介者中,同事关系在编译时就确定了
      • 观察者模式通过运行时增加观察者拓展功能

备忘录模式

  • 对象提供获取,恢复其状态的方法供外部控制对象使用

观察者模式

  • 一对多的状态变化通知,observable and observer

状态模式

  • 相同的输入,不同的响应,一些状态变化和输入会导致响应部分切换

策略模式

  • 提供一种计算方法,对数据的操作方式
  • 和状态模式的区别
    • 策略由外部程序配置,状态由一系列状态自己控制

模板方法模式

  • 一系列固定的工序和操作,流程或者一些是固定的,剩余的会有各自的表现,在父类中定义操作,并且让子类去实现

访问者模式

  • 一种外部的策略模式,策略通过参数传递,不跟对象关联
  • 适合情况,被访问的数据基本不变,对相同数据有不同处理方式的类变化较多
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值