模板模式
模板模式
阶段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();
}
![image-20210911195712602](https://img2020.cnblogs.com/blog/2142074/202110/2142074-20211004173215781-1231812103.png)
阶段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