《TemplateMethod1.h》
#include <iostream>
#include <string>
using namespace std;class A{
public:
A(){};
virtual ~A(){};
void Method();
protected:
virtual void b() = 0;
virtual void c() = 0;
};
class B: public A{
public:
B(){};
virtual ~B(){};
protected:
void c();
void b();
};
class C: public A{
public:
C(){};
virtual ~C(){};
protected:
void b();
void c();
};
《TemplateMethod1.cpp》
include "stdafx.h"
#include "TemplateMethod1.h"
void A::Method(){
this->b();
this->c();
}
void B::b(){
cout << "B::b()" <<endl;
}
void B::c(){
cout << "B::c()" <<endl;
}
void C::b(){
cout << "C::b()" <<endl;
}
void C::c(){
cout << "C::c()" <<endl;
}
int main(int argc, char* argv[])
{
A* t = new B;
A* t1 = new C;
t->Method();
t1->Method();
return 0;
}
做一个简单的实现,具体了解了模板模式的核心主要是:将算法接口封装在抽象接口类中,算法实现放在派生类中实现。
工作中经常这么设计,原来也属设计模式中的一种。