1.目的
将公共的方法提到父类,并提出接口,由子类实现,本质就是多态
2.代码
templatemethod.h
#ifndef TEMPLATEMETHOD_H_
#define TEMPLATEMETHOD_H_
#include <iostream>
using namespace std;
class TemplateClass
{
public:
virtual ~TemplateClass()
{}
virtual void operation1()=0;
virtual void operation2()=0;
};
class ConcreteClass1: public TemplateClass
{
void operation1()
{
cout<<"Concrete1 operation1"<<endl;
}
void operation2()
{
cout<<"Concrete1 operation2"<<endl;
}
};
class ConcreteClass2: public TemplateClass
{
void operation1()
{
cout<<"Concrete2 operation1"<<endl;
}
void operation2()
{
cout<<"Concrete2 operation2"<<endl;
}
};
templatemethod.cpp
#include "TemplateMethod.h"
void templateMethod()
{
TemplateClass* c = NULL;
c = new ConcreteClass1();
c->operation1();
c->operation2();
delete c;
c = new ConcreteClass2();
c->operation1();
c->operation2();
delete c;
}
运行结果:
Concrete1 operation1
Concrete1 operation2
Concrete2 operation1
Concrete2 operation2