前言
在学习侯捷老师的有关设计模式的课程(李建忠老师主讲)中,老师对23种设计模式的有自己的划分,如下。所以老师讲解是按照这种顺序讲解。
组件协作:
Template Method
1. 使用场合
这里圈出的几个关键字需要着重理解。归纳一下:
- 在一个稳定操作的过程。就是说实现某个功能的步骤固定。
- 在稳定的前提下有变化。就是说虽然步骤固定,但是其中有几步是不确定的,需要以后确定具体做什么。
2.案例一:打开一个文件
我们在打开一个文件时,总是会有以下几个步骤:
点击目录 -> 检查文件状态 -> 打开文件 -> (对文件操作)
->关闭文件 ->刷新文件界面
这里的对文件操作
是加入新内容呢,还是删除某些行呢,是我们无法确定的。这就是稳定步骤下的变化。
下面模拟一下这个过程:
#include<iostream>
using namespace std;
class CDocument
{
public:
void OnFileOpen(void);//抽象出的一般方法
protected:
virtual void Serialize()//特殊的方法
{
cout << "默认serialize" << endl; }
};
void CDocument::OnFileOpen()
{
cout << "dialog..." << endl;
cout << "check file status..." << endl;
cout << "open file..." << endl;
Serialize();//这是特殊的方法,因客户不同而异
cout << "close file..." << endl;
cout << "updata all views..." << endl;
}
class CmyDoc :public CDocument
{
protected:
virtual void