模版方法模式

应用程序结构框架允许从一个或一组类中继承以便创建一个新的应用程序,重用现存类中几乎所有的代码,并且覆盖其中一个或多个函数以便自定义所需要的应用程序。应用程序结构框架中的一个基本的概念是模版方法(Template Method)模式,它很典型地隐藏在覆盖的下方,通过调用基类的不同函数(这时覆盖了其中一些函数以创建应用程序)来驱动程序运行。

模版方法的一个重要特征是它的定义在基类中(有时作为一个私有成员函数)并且不能改动——模版方法模式就是“坚持相同的代码”。它调用其它基类函数(就是那些被覆盖的函数)以便完成工作,但是客户程序员不必直接调用这些函数。

// Simple demonstration of Template Method.
#include <iostream>
using namespace std;

class ApplicationFramework {
protected:
	virtual void customize1() = 0;
	virtual void customize2() = 0;
public:
	void templateMethod() {
		for(int i = 0; i < 5; i++) {
			customize1();
			customize2();
		}
	}
};

// Create a new "application":
class MyApp : public ApplicationFramework {
protected:
	void customize1() { cout << "Hello "; }
	void customize2() { cout << "World!" << endl; }
};

int main() {
	MyApp app;
	app.templateMethod();
}

驱动应用程序运行的“引擎”是模版方法模式。在GUI(图形用户界面)应用程序中,这个“引擎”就是主要的事件环。

注意,模版方法就是“坚持相同的代码”,而被覆盖的函数是“变化的代码”。

选自《C++编程思想》。

转载于:https://www.cnblogs.com/chinaxmly/archive/2012/09/30/2709445.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值