设计模式——模板方法

未使用设计模式时,代码如下:

#include <QCoreApplication>

//程序库开发人员
class Library{
public:
    void Step1(){}
};

//应用程序开发人员
class Application{
public:
    void Step2(){}
};

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    Library lib;
    Application app;

    lib.Step1();
    app.Step2();

    return a.exec();
}

如果Step1和Step2是比较稳定的逻辑时,可以将Step2以虚函数(纯虚函数)写在Library中。

使用设计模式后,代码如下:

#include <QCoreApplication>

//程序库开发人员
class Library{ //稳定 template method
public:
    void Run(){
        Step1();
        Step2(); //支持变化 ==> 虚函数的多态调用
    }
    virtual ~Library(){ }

protected:
    void Step1() {} //稳定
    virtual void Step2();//变化
};

//应用程序开发人员
class Application : public Library {
protected:
    virtual void Step2(); //... 子类重写实现
};

int main(int argc, char *argv[]) {
    QCoreApplication a(argc, argv);

    Library* pLib=new Application();
    pLib->Run();
    delete pLib;

    return a.exec();
}

这样,应用开发人员,只要继承Library,再重新实现Step2即可。

使用该模式的前提是,要划分清楚哪部分是稳定的,哪部分是变化的。

将稳定的写在父类中,而变化的在子类中实现,这也是多态。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值