模板模式
作者:互联网
模板模式
阶段1
//程序库开发人员
class Library
{
public:
void step1();
void step3();
void step5();
}
//应用程序开发人员
class Application
{
public:
bool step2();
bool step4();
}
int main()
{
Labrary lib;
Application app;
lib.step1();
if(app.step2())
{
lib.step3();
}
for(int i=0;i<4;++i)
{
app.step4();
}
lib.step5();
}
阶段2
//应用程序开发人员
class Libary
{
public:
Libary();
virtual ~Libary();
void run()
{
step1();
if(step2())
{
step3();
}
for(int i=0;i<4;++i)
{
step4();
}
step5();
}
protected:
void step1();//稳定
void step3();//稳定
void step5();//稳定
virtual bool step2();//变化
virtual bool step4();//变化
}
//应用程序开发人员
class Application : public Libary
{
protected:
virtual bool step2() override;//子类化实现
virtual bool step4() override;//子类化实现
}
int main()
{
Library* lib=new Application();
lib->run();
delete lib;
}
模式定义
定义一个操作中的算法的骨架(稳定),而将一些步骤延迟(变化)到子类中,Template Method 使得子类可
以不改变(复用)一个算法的结构即可重定义(override重写)该算法的特写步骤。
类图
classDiagram class AbstractClass{ +TemplateMethod() #PrimitiveOperation1() #PrimitiveOperation1() } class ConcreteClass{ #PrimitiveOperation1() #PrimitiveOperation1() } AbstractClass <|-- ConcreteClass标签:lib,开发人员,int,void,模式,PrimitiveOperation1,class,模板 来源: https://www.cnblogs.com/shiguoliang/p/15366829.html