c++/qt设计模式-模板方法模式

文章中部分内容和思路来自《Head First设计模式》

 

模式定义

在一个方法中定义一个方法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。

 

模式类图

SouthEast

 

典型案例

1.需求说明

客户去银行办理业务的基本流程一致,都是先取号排队,然后在柜台办理相关业务,最后给出评价。其中不同客户办理的业务可能不同,我们放到子类中去实现

 

2.代码实现

-------------

BankOpera.h

-------------

#ifndef BANKOPERA_H
#define BANKOPERA_H
 
 
class BankOpera
{
public:
    BankOpera();
 
public:
    void transact();
 
protected:
    void getTrack(); // 取号
    virtual void bussiness(); // 办理业务
    void comment(); // 评价
};
 
#endif // BANKOPERA_H
 

 

 

-------------

BankOpera.cpp

-------------

#include "BankOpera.h"
 
#include <QDebug>
 
BankOpera::BankOpera()
{
 
}
 
void BankOpera::transact()
{
    getTrack();
    bussiness();
    comment();
}
 
void BankOpera::getTrack()
{
    qDebug() << "取号";
}
 
void BankOpera::bussiness()
{
 
}
 
void BankOpera::comment()
{
    qDebug() << "评分";
}
 

 

 

------------------

MoneyInBankOpera.h

------------------

#ifndef MONEYINBANKOPERA_H
#define MONEYINBANKOPERA_H
 
#include "BankOpera.h"
 
class MoneyInBankOpera : public BankOpera
{
public:
    MoneyInBankOpera();
 
protected:
    virtual void bussiness(); // 办理业务
};
 
#endif // MONEYINBANKOPERA_H
 

 

 

--------------------- 

MoneyInBankOpera.cpp

---------------------

#include "MoneyInBankOpera.h"
 
#include <QDebug>
 
MoneyInBankOpera::MoneyInBankOpera()
{
 
}
 
void MoneyInBankOpera::bussiness()
{
    qDebug() << "取钱";
}
 

 

 

--------------------

NewAcountBankOpera.h

--------------------

#ifndef NEWACOUNTBANKOPERA_H
#define NEWACOUNTBANKOPERA_H
 
#include "BankOpera.h"
 
class NewAcountBankOpera : public BankOpera
{
public:
    NewAcountBankOpera();
 
protected:
    virtual void bussiness(); // 办理业务
};
 
#endif // NEWACOUNTBANKOPERA_H
 

 

 

----------------------

NewAcountBankOpera.cpp

----------------------

#include "NewAcountBankOpera.h"
 
#include <QDebug>
 
NewAcountBankOpera::NewAcountBankOpera()
{
 
}
 
void NewAcountBankOpera::bussiness()
{
    qDebug() << "开户";
}
 

 

  

---------

main.cpp

---------

/**
 * 设计模式-模板方法模式
 * 要点:1,算法骨架 2,具体方法
 */
 
#include <QCoreApplication>
 
#include "MoneyInBankOpera.h"
#include "NewAcountBankOpera.h"
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    BankOpera *ope = new MoneyInBankOpera;
    ope->transact();
 
    delete ope;
 
    ope = new NewAcountBankOpera;
    ope->transact();
 
    return a.exec();
}
 

 

 

 

《Head First》中举了一个冲咖啡和冲茶的案例,大同小异,有兴趣可以自己去看下

 

 

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 《C++ Qt设计模式(第二版)》是一本介绍如何在Qt框架下进行软件开发的书籍。本书主要讲述了设计模式Qt中的应用,对于希望使用Qt进行开发的人员来说,这本书是一本非常实用的工具书。 本书的作者在书中详细介绍了Qt框架中的各种常用设计模式,如单例模式、工厂模式、观察者模式、策略模式等等。通过这些设计模式,读者可以更加高效地开发出高质量的Qt应用。 在介绍设计模式的同时,作者还使用了大量的案例来帮助读者理解如何使用这些设计模式进行开发。通过案例的学习,读者可以更加深入地理解设计模式的应用。 本书的内容非常系统、全面,同时也非常实用。无论是需要学习Qt框架的新手,还是有一定经验的开发者,都可以通过这本书来提高自己的开发技能。总而言之,如果你想要更加高效地开发Qt应用,那么这本《C++ Qt设计模式(第二版)》绝对是你不可缺少的工具。 ### 回答2: 《C++Qt设计模式(第二版)》是由深入浅出出版社出版的一本介绍C++Qt设计模式的技术书籍,适合那些想要深入理解C++Qt设计模式的开发者阅读。 本书涵盖了设计模式的基础知识和核心思想,包括设计模式的概念、分类和优缺点等方面的内容。作者从实战出发,通过大量的代码示例和详细的讲解,分别介绍了创建型、结构型和行为型等基本设计模式实现方法,使读者能够深入理解设计模式的本质,并在实际开发中灵活应用。 此外,本书还分别介绍了C++Qt的基础知识,使读者能够更好地理解和掌握设计模式。作者特别讲解了Qt的信号与槽机制以及模板元编程等特性,也详细解释了Qt中的模型视图编程、线程与并发、网络编程以及图形和OpenGL编程等内容,为读者提供了全面的Qt开发技能。 总之,《C++Qt设计模式(第二版)》是一本非常有价值的技术书籍,它不仅介绍了设计模式的基本概念和应用方法,更通过详细的代码实例和讲解,帮助读者理解设计模式实现和应用。无论是初学者还是有一定开发经验的开发人员,都可以从中获益,并提升自己的技术水平。 ### 回答3: Qt设计模式是一本面向对象编程中的经典书籍,涉及了很多常见的设计模式和它们在Qt框架中的实现方法。这本书第二版主要更新了 Qt 5 的内容,使得读者能够更好地学习和掌握Qt框架中的设计模式。 首先,本书详细介绍了23种常见的设计模式,这些模式包括创建型模式、结构型模式和行为型模式。每一种模式都有相应的原则、优缺点和实际应用场景。同时,这些设计模式Qt框架中的实例结合得非常好,让读者能够更好地理解和应用。 其次,本书提供了大量的实例,这些实例覆盖了Qt框架中的核心模块,如GUI、网络、I/O等。这些实例可以帮助读者更好地理解如何在实际项目中使用设计模式。 此外,本书还讲解了一些高级话题,如多线程编程、模板编程、元编程等。这些话题能够帮助读者更深入地理解Qt框架和面向对象编程。 总而言之,Qt设计模式(第二版)是一本非常有价值的书籍。它不仅可以帮助读者更好地掌握常见的设计模式,还能够教会读者如何在Qt框架中应用这些模式。无论是Qt开发者还是面向对象编程爱好者,都可以从这本书中受益匪浅。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SuperYang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值