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

相关推荐
Charles_go2 小时前
41、C#什么是单例设计模式
java·设计模式·c#
ZHE|张恒2 小时前
设计模式实战篇(六):装饰器模式 —— 让系统具备“可生长能力”的架构思想
设计模式·装饰器模式
孟祥_成都6 小时前
下一代组件的奥义在此!headless 组件构建思想探索!
前端·设计模式·架构
颜酱13 小时前
理解编程的设计原则(前端角度)
设计模式
Wild_Pointer.16 小时前
设计模式实战精讲:全景目录
设计模式·设计规范
一叶飘零_sweeeet1 天前
深度拆解汽车制造系统设计:用 Java + 设计模式打造高扩展性品牌 - 车型动态生成架构
java·设计模式·工厂设计模式
阿波罗尼亚1 天前
设计原则(一)Head First设计模式
设计模式
ZHE|张恒2 天前
设计模式实战篇(五):责任链模式 — 把复杂审批/过滤流程变成可组合的“传递链”
设计模式·责任链模式
CodeAmaz2 天前
使用责任链模式设计电商下单流程(Java 实战)
java·后端·设计模式·责任链模式·下单
大G的笔记本2 天前
Java常见设计模式面试题(高频)
java·开发语言·设计模式