// Template Method.cpp : 定義控制台應用程式的進入點。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
class AbstractClass
{
public:
AbstractClass(){}
virtual ~AbstractClass(){}
// 這個函數中定義了演算法的輪廓
void TemplateMethod()
{
PrimitiveOperation1();
PrimitiveOperation2();
}
protected:
// 純虛函數,由衍生類別實現之
virtual void PrimitiveOperation1() = 0;
virtual void PrimitiveOperation2() = 0;
};
// 繼承自AbstractClass,實現演算法
class ConcreateClass: public AbstractClass
{
public:
ConcreateClass(){}
virtual ~ConcreateClass(){}
protected:
virtual void PrimitiveOperation1()
{
cout << "PrimitiveOperation1 by ConcreateClass/n";
}
virtual void PrimitiveOperation2()
{
cout << "PrimitiveOperation2 by ConcreateClass/n";
}
};
int _tmain(int argc, _TCHAR* argv[])
{
AbstractClass* pConcreateClass = new ConcreateClass;
pConcreateClass->TemplateMethod();
delete pConcreateClass;
return 0;
}