【3】模板方法

一.GOF-23 模式分类

从目的来看:

  • 创建型模式:解决对象创建的工作。
  • 结构型模式:解决需求变化为对象结构带来的冲击。
  • 行为型模式:解决多个类交互之间责任的划分问题。

从范围来看:

  • 类模式处理类与子类的静态关系(注重类)
  • 对象模式处理对象间的动态关系(注重组合方案)

从封装变化角度对模式分类:

组件协作:

  • Template Method
  • Strategy
  • Observer / Event

单一职责:

  • Decorator
  • Bridge

对象创建:

  • Factory Method
  • Abstract Factory
  • Prototype
  • Builder

对象性能:

  • Singleton
  • Flyweight

接口隔离:

  • Facade
  • Proxy
  • Mediator
  • Adater

状态变化:

  • Memento
  • State

数据结构:

  • Composite
  • Iterator
  • Chain of Resposibility

行为变化:

  • Conmand
  • Visitor

领域问题:

  • Interpreter

二.重构获得模式 Refactoring to Patterns

面向对象设计模式是"好的面向对象设计" => 可以满足"应对变化,提高复用"的设计模式。

现代软件设计的特点是"需求的频繁变化"。"寻求变化点,然后在变化点处应用设计模式"。

设计模式的应用不宜先入为主,一上来就使用设计模式是最大误用。没有一步到位的设计模式。

重构关键技法

静态 => 动态

早绑定 => 晚绑定

继承 => 组合

编译时依赖 => 运行时依赖

紧耦合 => 送耦合

三."组件协作"模式

"组件协作"模式通过晚期绑定,来实现框架与程序之间的松耦合,是二者之间协作时常用的模式。

典型模型:

  • Template Method
  • Strategy
  • Observer / Event

要点总结

Template Method模式是一种肥肠基础性的设计模式。它用最简洁的机制(虚函数)为很多应用程序框架提供了灵活的扩展点,是代码复用方便的实现结构。

除了可以灵活应对子步骤变化外,"不要不要调用我,让我来调用你"的反向控制结构式Template Mothod的典型应用。

在具体实现方面,被Template Method调用的虚方法可以实现,也可以没有任何实现(抽象方法、纯虚方法),但推荐要把它们设置为protected方法。

相关推荐
老蒋每日coding4 小时前
AI Agent 设计模式系列(十九)—— 评估和监控模式
人工智能·设计模式
会员果汁4 小时前
23.设计模式-解释器模式
设计模式·解释器模式
「QT(C++)开发工程师」12 小时前
C++设计模式
开发语言·c++·设计模式
茶本无香12 小时前
设计模式之七—装饰模式(Decorator Pattern)
java·设计模式·装饰器模式
漂洋过海的鱼儿1 天前
设计模式——EIT构型(三)
java·网络·设计模式
老蒋每日coding1 天前
AI Agent 设计模式系列(十八)—— 安全模式
人工智能·安全·设计模式
老蒋每日coding1 天前
AI Agent 设计模式系列(十六)—— 资源感知优化设计模式
人工智能·设计模式·langchain
老蒋每日coding1 天前
AI Agent 设计模式系列(十七)—— 推理设计模式
人工智能·设计模式
冷崖1 天前
桥模式-结构型
c++·设计模式
连山齐名1 天前
设计模式之一——堵塞队列
设计模式