概述
模板方法一般在类库里面比较常见,类库里把实现某一功能需要的各个步骤逻辑实现好,调用者只需要按照需要重新修改某几步。框架是相对稳定的,变化隔离在客户程序。
例如实现某一功能逻辑如下
step1()
step2()
if (step()3)
setp4()
setp5()
step2和step4不同用户有不同实现,其他步骤固定
将上述逻辑用模板方法实现
template_method_lib.h
#ifndef _TEMPLATE_METHOD_LIB_H
#define _TEMPLATE_METHOD_LIB_H
using namespace std;
class lib{
public:
void doTask();
protected:
virtual bool step3() = 0;
virtual void step4() = 0;
private:
void step1();
void step2();
void step5();
};
#endif
template_method_lib.cpp
#include "template_method_lib.h"
#include <iostream>
void lib::step1(){
cout<<"step1"<<endl;
}
void lib::step2(){
cout<<"step2"<<endl;
}
void lib::step5(){
cout<<"step5"<<endl;
}
void lib::doTask(){
step1();
step2();
if(step3()){
step4();
}
step5();
}
template_method_app.h
#ifndef _TEMPLATE_METHOD_APP_H
#define _TEMPLATE_METHOD_APP_H
#include "template_method_lib.h"
using namespace std;
class app :public lib{
public:
app(int id):m_id(id){}
protected:
virtual bool step3()override;
virtual void step4()override;
private:
int m_id;
};
#endif
template_method_app.cpp
#include "template_method_app.h"
#include <iostream>
bool app::step3(){
cout<<"step3"<<endl;
return m_id%2 == 0;
}
void app::step4(){
cout<<"step4"<<endl;
}
main.cpp
#include "template_method_app.h"
int main(){
app cApp(2);
cApp.doTask();
return 0;
}
最后
以上就是光亮金毛为你收集整理的c++template method模板方法的全部内容,希望文章能够帮你解决c++template method模板方法所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复