设计模式——模版模式(template)

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中调用的虚函数,可以实现也可以没有实现(抽象方法或者纯虚方法)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值