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

相关推荐
执笔论英雄1 小时前
Slime异步原理(单例设计模式)4
开发语言·python·设计模式
执笔论英雄3 小时前
Slime异步原理(单例设计模式)5
设计模式
未可知7773 小时前
软件设计师(上午题4)、面向对象、uml、设计模式
设计模式·职场和发展·uml
执笔论英雄3 小时前
【RL】Slime异步原理(单例设计模式)6
人工智能·设计模式
da_vinci_x3 小时前
PS 结构参考 + Firefly:零建模量产 2.5D 等轴游戏资产
人工智能·游戏·设计模式·prompt·aigc·技术美术·游戏美术
小股虫4 小时前
代码优化与设计模式 — 实战精要
java·设计模式·重构
白衣鸽子14 小时前
【基础数据篇】数据格式化妆师:Formatter模式
后端·设计模式
ZHE|张恒15 小时前
设计模式(十八)命令模式 —— 将操作封装成对象,实现撤销、队列等扩展
设计模式·命令模式
settingsun122518 小时前
AI App: Tool Use Design Pattern 工具使用设计模式
设计模式
y***54881 天前
PHP框架设计模式
设计模式