行为模式3-模板方法
模板方法Template Method
意图
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可以重新定义该算法的某些特定步骤。
问题思考
父类是Application,有两个子类Win32Application, LinuxApplication。考虑在不同操作系统下打开图片文件并转化成对应操作系统风格的图标。Application只负责定义步骤:1.打开图片;2.转化成图标。具体的实现有Application子类来完成。
实际上,我们在日常的开发中大量的使用了模板方法。
适用性
- 定义一系列抽象方法的执行步骤,具体的子类将重定义各抽象方法以实现各步骤。
类图
template_method实现
class AbstractClass {
public:
void Template() {
Operation1();
Operation2();
}
virtual void Operation1() = 0;
virtual void Operation2() = 0;
};
class ConcreteClass : public AbstractClass {
public:
void Operation1() override {
std::cout << "Hello template 1" << std::endl;
}
void Operation2() override {
std::cout << "Hello template 2" << std::endl;
}
};
网友评论