C++设计模式笔记(03-01) - Template Method_模板方法(上)



  • 参考课程:《C++设计模式》-李建忠
    C++设计模式笔记(03-01) - Template Method_模板方法(上)

1.GOF1-23模式分类

《设计模式:可复用面向对象软件的基础》P23:
C++设计模式笔记(03-01) - Template Method_模板方法(上)
▷从目的来看:

  • 创建型(Creational)模式:将对象的部分创建工作延迟到子类或者其他对象,从而应对需求变化为对象创建时具体类型实现引来的冲击。
  • 结构型(Structural)模式:通过类继承或者对象组合获得更灵活的结构,从而应对需求变化为对象的结构带来的冲击。
  • 行为型(Behavioral)模式:通过类继承或者对象组合来划分类与对象间的职责,从而应对需求变化为多个交互的对象带来的冲击。

▷从从范围来看:

  • 类模式处理类与子类的静态关系。
  • 对象模式处理对象间的动态关系。

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

类型 模式
组件协作 模板方法模式(Template Method Pattern),观察者模式(Observer / Event Pattern),策略模式(Strategy Pattern)
对象创建 工厂方法模式(Factory Method Pattern), 抽象工厂模式(Abstract Factory Pattern),原型模式(Prototype Pattern),生成器模式(Builder Pattern)
对象性能 单例模式(Singleton Pattern),享元模式(Flyweight Pattern)
接口隔离 外观模式(Façade Pattern),代理模式(Proxy Pattern),中介者模式(Mediator Pattern),适配器模式(Adapter)
数据结构 组合模式(Composite Pattern),迭代器模式(Iterator Pattern),责任链模式(Chain of Resposibility Pattern)
行为变化 命令模式(Command Pattern),访问者模式(Visitor Pattern)
领域问题 解释器模式(Interpreter Pattern)

3.重构获得模式 Refatoring to patterns

C++设计模式笔记(03-01) - Template Method_模板方法(上)
▷面向对象设计模式是“好的面向对象设计”,所谓“好的面向对象设计”指是那些可以满足 “应对变化,提高复用”的设计 。
▷现代软件设计的特征是“需求的频繁变化”。设计模式的要点是“寻找变化点,然后在变化点处应用设计模式,从而来更好地应对需求的变化”.“什么时候、什么地点应用设计模式”比“理解设计模式结构本身”更为重要。
▷设计模式的应用不宜先入为主,一上来就使用设计模式是对设计模式的最大误用。没有一步到位的设计模式。敏捷软件开发实践提倡的“Refactoring to Patterns”是目前普遍公认的最好的使用设计模式的方法。

4.重构关键技法

C++设计模式笔记(03-01) - Template Method_模板方法(上)
技法与原则比某一个单纯的模式重要。

  1. 静态(绑定) ➨ 动态(绑定)
  2. 早绑定 ➨ 晚绑定
  3. 继承 ➨ 组合
  4. 编译时依赖 ➨ 运行时依赖
  5. 紧耦合 ➨ 松耦合

5.“组件协作”模式

▷现代软件专业分工之后的第一个结果是“框架与应用程序的划分”,“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式。

▷典型模式

  • 模板方法模式(Template Method)
  • 观察者模式(Observer / Event)
  • 策略模式(Strategy)

欢迎关注公众号:c_302888524
发送:“设计模式:可复用面向对象软件的基础” 获取电子书
C++设计模式笔记(03-01) - Template Method_模板方法(上)


  1. C++设计模式笔记(03-01) - Template Method_模板方法(上)
    《Design Patterns: Elements of Reusable Object-Oriented Software》(即后述《设计模式:可复用面向对象软件的基础》一书),由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 合著(Addison-Wesley,1995)。这几位作者常被称为"四人组(Gang of Four)"。 ↩︎