【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方法。

相关推荐
alibli3 小时前
一文学会设计模式之结构型模式及最佳实现
c++·设计模式
电子科技圈7 小时前
SiFive车规级RISC-V IP获IAR最新版嵌入式开发工具全面支持,加速汽车电子创新
嵌入式硬件·tcp/ip·设计模式·汽车·代码规范·risc-v·代码复审
七月丶8 小时前
Cloudflare 🌏 中国大陆网络访问优化 - 0元成本
人工智能·react.js·设计模式
筏.k9 小时前
C++ 设计模式系列:单例模式
c++·单例模式·设计模式
__万波__9 小时前
二十三种设计模式(十二)--代理模式
java·设计模式·代理模式
郝学胜-神的一滴9 小时前
Linux线程编程:从原理到实践
linux·服务器·开发语言·c++·程序人生·设计模式·软件工程
我爱学习_zwj10 小时前
前端设计模式:轻量级实战指南
设计模式·前端框架·状态模式
还是大剑师兰特10 小时前
前端设计模式:详解、应用场景与核心对比
前端·设计模式·大剑师
平凡之路无尽路1 天前
智能体设计模式:构建智能系统的实践指南
人工智能·设计模式·自然语言处理·nlp·aigc·vllm
冷崖2 天前
工厂模式-创建型
c++·设计模式