Template、Strategy、Observor属于构件协作类型的设计模式。
motivation:对于某一项任务,常常有稳定的整体操作结构,但是各个子步骤却又很多改变的需求,或者由于固有原因无法与整体任务结构一起实现(整体稳定,局部变化)。
key interface or class:
1.library或者framework—在框架或者类库中定义主流程,对变化的子类方法进行晚绑定;
2.application—调用者,实现变化的方法,调用主流程运行。
structure:

template codes:
//库或者框架的实现
class library{
public:
void run(){
//稳定的主流程步骤
step1();
step2(); //支持变化,使用虚函数来说实现多态
step3();
step4(); //支持变化,使用虚函数来说实现多态
step5();
}
virtual ~library(){};
protect:
//稳定步骤
void step1(){
//...
}
void step3(){
//...
}
void step4(){
//...
}
//变化步骤
virtual void step2()=0;
virtual void step4()=0;
}
//调用者的工作
//1.继承函数来实现变化的功能
class application: public library{
protect:
virtual void step2(){
//实现具体功能
};
virtual void step4(){
//实现具体功能
};
}
//调用主流程
int main(){
library* lib = new application();
lib->run();
delete lib;
}
summary:
1. template模式是非常基础的设计模式,为许多应用程序框架提供了灵活的扩展点;
2.“不要调用我,让我来调用你”的反向控制结构;
3.在template method中调用的虚函数,可以实现也可以没有实现(抽象方法或者纯虚方法)。
本文探讨了设计模式中的Template、Strategy与Observer模式,重点在于如何通过这些模式解决整体稳定而局部变化的问题。Template模式允许在不修改主流程的情况下,通过虚函数实现子步骤的多态变化,而Strategy模式则提供了一种将算法封装为独立对象的方法,使算法可以在运行时被替换。此外,文章还简要提到了Observer模式的应用。
&spm=1001.2101.3001.5002&articleId=103215306&d=1&t=3&u=27b1d6303b874de48d47b183daa12c9b)
1416

被折叠的 条评论
为什么被折叠?



