设计模式——模板方法

本文探讨了如何通过设计模式将稳定的程序逻辑(如Step1)与可变部分(Step2)分离,利用虚函数实现多态,提升代码灵活性。通过实例展示了如何在Library类中引入纯虚函数,并让Application继承并重写,以适应变化的需求。
摘要由CSDN通过智能技术生成

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

#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即可。

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值