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

相关推荐
Kel2 小时前
MCP 传输链路全链路拆解:从字节流到协议栈的四层架构之旅
人工智能·设计模式·架构
atunet5 小时前
关于算法设计模式的演化与编程范式变迁的技术7
算法·设计模式
geovindu11 小时前
go:Timing Functions Pattern
开发语言·后端·设计模式·golang·计时函数模式·性能分析模式
咖啡八杯2 天前
GoF设计模式——备忘录模式
java·后端·spring·设计模式
槑有老呆2 天前
从 Prompt Engineering 到 Harness Engineering:AI 编程的下一次跃迁
设计模式
HjhIron2 天前
从Prompt到Context:大模型应用开发的范式转移
设计模式·aigc·ai编程
咖啡八杯4 天前
GoF设计模式——中介者模式
java·后端·spring·设计模式
胡萝卜术4 天前
从“分数打架”到“排名投票”:为什么你的ChatBI必须用RRF?
算法·设计模式·面试
亦暖筑序5 天前
Java 8老系统Browser Agent实战:三层拦截把AI操作后台变成可审计流程
java·后端·设计模式
青禾网络7 天前
Web 前端如何接入 AI 音效生成:从零到可用的完整方案
人工智能·设计模式