我是靠谱客的博主 光亮金毛,最近开发中收集的这篇文章主要介绍c++template method模板方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

模板方法一般在类库里面比较常见,类库里把实现某一功能需要的各个步骤逻辑实现好,调用者只需要按照需要重新修改某几步。框架是相对稳定的,变化隔离在客户程序。
例如实现某一功能逻辑如下
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模板方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部