本文共 1309 字,大约阅读时间需要 4 分钟。
在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架是相同的。Template提供了这种情况的实现框架。
Template.h
//Template.h#ifndef _TEMPLATE_H_#define _TEMPLATE_H_class AbstractClass{public: virtual ~AbstractClass(); void TemplateMethod();protected: virtual void PrimitiveOperation1() = 0; virtual void PrimitiveOperation2() = 0; AbstractClass();private:};class ConcreteClass1:public AbstractClass{public: ConcreteClass1(); ~ConcreteClass1();protected: void PrimitiveOperation1(); void PrimitiveOperation2();private:};class ConcreteClass2:public AbstractClass{public: ConcreteClass2(); ~ConcreteClass2();protected: void PrimitiveOperation1(); void PrimitiveOperation2();private:};#endif //~TEMPLATEHTemplate.cpp
#include "Template.h"#includemain.cppusing namespace std;AbstractClass::AbstractClass(){}AbstractClass::~AbstractClass(){}void AbstractClass::TemplateMethod(){ this->PrimitiveOperation1(); this->PrimitiveOperation2();}ConcreteClass1::ConcreteClass1(){}ConcreteClass1::~ConcreteClass1(){}void ConcreteClass1::PrimitiveOperation1(){ cout<<"ConcreteClass1...PrimitiveOperation1"<
#include "Template.h"#includeusing namespace std;int main(){ AbstractClass* p1 = new ConcreteClass1(); AbstractClass* p2 = new ConcreteClass2(); p1->TemplateMethod(); p2->TemplateMethod(); return 0;}
转载地址:http://njvvi.baihongyu.com/