GoF设计模式(二)

时间: 2023-07-09 admin 互联网

GoF设计模式(二)

GoF设计模式(二)

文章目录

  • 复用决策与扩展决策的行为
    • 由具体子类决定
      • Template 模板行为
    • 由其他类的对象决定
      • Strategy 策略(库)行为
      • State 状态(机)行为
    • 由具体子类决定与其他类的对象决定
      • Visitor 访问者行为
  • 用于遍历对象集合行为
    • Iterator 迭代器行为
    • Visitor 访问者行为
  • 用于解耦的行为
    • 降低多个对象和类之间的通信复杂性
      • Mediator 中介行为
    • 请求者与实现者解耦
      • Command 命令化(指令化)
      • Chain of Responsibility 责任链
      • Interpreter 解释器
    • 降低一对多的复杂度
      • Observer 观察者行为
  • 用于吃后悔药
    • Memento 备忘录
    • Command 指令逆向操作

复用决策与扩展决策的行为

由具体子类决定

Template 模板行为

定义一个操作中的算法骨架,而将算法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

由其他类的对象决定

Strategy 策略(库)行为

该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。

策略模式属于对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

State 状态(机)行为

不同的状态,不同的行为

状态模式与策略模式非常相似
状态模式与策略模式的区别在于:
Strategy与Strategy是平行的,无联系或弱相关的,Strategy的切换被动的。
State与State之间可能是有联系的,有State的变化图,State的切换是自动的。

由具体子类决定与其他类的对象决定

Visitor 访问者行为

将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。

用于遍历对象集合行为

Iterator 迭代器行为

为不同的集合数据结构(数组,链表,树,图等)提供统一的遍历方式

Visitor 访问者行为

为集合中不同的类提供不同访问操作

用于解耦的行为

降低多个对象和类之间的通信复杂性

Mediator 中介行为

请求者与实现者解耦

Command 命令化(指令化)

Chain of Responsibility 责任链

避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。

Interpreter 解释器

降低一对多的复杂度

Observer 观察者行为

用于吃后悔药

Memento 备忘录

Command 指令逆向操作


  • 上一章节 GoF设计模式(一)-结构型模式简介
  • 下一章节 GoF设计模式(三)-创建型模式