C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法

 对于设计模式初学者来说,GoF的这本设计模式(可复用面向对象软件的基础)是有些难理解的,因此我先看了****,附上教程链接网址https://www.bilibili.com/video/av52251106/?p=3。

       以下是我的学习笔记整理,分享给有需要的朋友,记录的比较简单,如有不理解的地方可以看原教程视频链接,或者留言给我,本小菜和你一起探讨。

1.从目的来看:

(1)创建型模式(creational):将对象的部分创建工作类或者其他对象,从而对需求变化为对象创建时 现引来的冲击。

(2)结构型模式(structural):通过类继承或者对象组 活的结构,从而应对需求变化为对象的结构带来的冲击

(3)行为型模式(Behavioral):通过类继承或者对象组合 类与对象间的职责,从而应对需求变化为多个交互的 的冲击。

2.从范围来看:

(1)类模式处理类与子类的静态关系。

(2)对象模式处理对象间的动态关系。

3.“应对变化,提高复用”

“寻找变化点,在变化点处应用设计模式”

敏捷软件考开发:refactoring to patterns,重构,没有一步到位的设计模式。

4.重构关键技法

 静态->动态

早绑定->晚绑定

继承->组合

编译时依赖->运行时依赖

紧耦合->松耦合

5.“组件协作”模式:

框架与应用。晚期绑定,松耦合。

典型模式:

Template Method

Strategy

Observer/Event

6.Template Method

稳定的整体,子步骤有改变。

模式定义:

定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中。

Template Method使得子类可以不改变(复用)一个算法的结构即可重定义

(override重写)该算法的某些特定步骤。

7.要点总结

(1)Template Method模式是一种非常基础性的设计模式,

机制简洁(虚函数,提供扩展点,扩展:继承+多态(虚函数))。

(2)“不要调用我,让我来调用你”的反响控制机制。

(3)被Template Method调用的虚函数,推荐使用protected,因为

为固定流程使用,其他类中通常不调用。

8.Template Method模式代码实例

C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法

C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法

C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法

C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法

C++ 设计模式(可复用面向对象软件的基础)学习笔记——第三讲 模板方法