# 行为型设计模式

# 责任链模式

行为设计模式,请求按处理者链路进行发送,每个处理者均可能请求进行处理,或传递给链条下个处理者

# 命令模式

行为设计模式,将请求转换为一个包含与请求相关所有信息的独立对象,可根据不同的请求将方法参数化、延迟请求执行,或将其放入队列中,且能实现可撤销操作

# 迭代器模式

行为设计模式,在不暴露集合底层表现形式情况下遍历集合中所有元素

  • 隐藏复杂度
  • 减少重复遍历代码
  • 遍历不同甚至无法预知的数据结构

# 中介者模式

行为设计模式,减少对象间混乱无序的依赖关系,限制对象之前互相交互,迫使它们通过一个中介者对象进行合作。特定状态知道与其它状态的关系

# 备忘录模式

# 适配器模式

# 状态模式

在一个对象内部状态变化时改变其行为,使其看上去就像改变了自己所属的类一样

状态模式建议为对象所有可能状态新建一个类,然后将所有状态的对应行为抽取到这些类中

例如手机按键与开关的关系

  • 解锁状态:按下按键执行各种功能
  • 锁定状态:按下任何键都解锁屏幕
  • 电量不足:按下任何键都显示充电页面

实现:

  1. 上下文:Context,保存一个具体状态对象的引用,并将所有与此状态相关的工作委派给它。上下文通过状态接口与状态对象交互,且会提供一个设置器用于传递新的状态对象。
  2. 状态:State,声明特定于状态的方法,这些方法能被其它所有具体状态所理解
  3. 具体状态:Concrete States,自行实现特定与状态的方法,为避免多个状态中包含相似的代码,可提供一个封装部分通用行为的中间抽象类

# 模板方法

行为模式,在超类中定义了一个算法的框架,允许子类在不个性结构的情况下重写算法的特定步骤

# 访问者模式

将算法与所作用的对象隔离开

# 策略模式

行为设计模式,定义一系列算法,并将不同的算法放入独立的类中,以使算法的对象能相互替换。

  1. 上下文:Context,维护指向策略的引用,仅通过策略接口与该对象进行交互
  2. 策略:Strategy,所有具体策略的通用接口,它声明了一个上下文用于执行策略的方法
  3. 上下文需要运行算法时,在其已连接的策略对象上调用执行方法,上下文不清楚所涉及的策略类型与算法的执行方式

优点:

  • 运行时切换对象内的算法
  • 算法实现与使用算法的代码隔离
  • 组合代替继承
  • 开闭原则,无需对上下文进行修改引入新的策略

缺点:

  • 算法极少改变,没有必要引入新的类和接口。使用它会让程序变得复杂
  • 客户端必须知晓策略间的不同,因为它要选择策略
  • 使用函数的方式和使用策略完全相同,而又无需要借助额外的类和接口,使代码更简洁
上次更新: : 5 months ago