1) 意图
定义一个操作中的算法骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可以重定义该算法的某些特定步骤
2) 结构
其中:
3) 适用性
4) 举例
1 #include <iostream> 2 class AbstractClass 3 { 4 public: 5 AbstractClass() {} 6 virtual ~AbstractClass() {} 7 void TemplateMethod() 8 { 9 PrimitiveOperation1(); 10 PrimitiveOperation2(); 11 } 12 protected: 13 virtual void PrimitiveOperation1() = 0; 14 virtual void PrimitiveOperation2() = 0; 15 }; 16 17 class ConcreateClass : public AbstractClass 18 { 19 public: 20 ConcreateClass() {} 21 virtual ~ConcreateClass() {} 22 virtual void PrimitiveOperation1() 23 { 24 std::cout << "PrimitiveOperation1" << std::endl; 25 } 26 virtual void PrimitiveOperation2() 27 { 28 std::cout << "PrimitiveOperation2" << std::endl; 29 } 30 }; 31 32 int main() 33 { 34 AbstractClass* ptr = new ConcreateClass; 35 ptr->TemplateMethod(); 36 delete ptr; 37 system("pause"); 38 }
原文:https://www.cnblogs.com/ho966/p/12245351.html