动机:对于某一项任务,常常有稳定的正常操作结构,但是各个子步骤却又很多改变的需求,或者由于固有的原因(比如框架与应用之间的关系)而无法和任务的整体结构同时实现。
设计关键:任务要求有固定的操作框架
优点:
- 晚绑定,更加灵活
缺点:
代码如下:
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include<iostream>
using namespace std;
class MainForm
{
public:
void Run()
{
Step1();
Step2();
Step3();
}
protected:
virtual void Step1()
{
cout << "MainForm Step1" << endl;
}
virtual void Step2()
{
cout << "MainForm Step2" << endl;
}
virtual void Step3()
{
cout << "MainForm Step3" << endl;
}
};
class App1 :public MainForm
{
protected:
virtual void Step2() override
{
cout << "App1 Step2" << endl;
}
};
int main()
{
MainForm* app = new App1();
app->Run();
delete app;
return 1;
}
运行结果: