设计模式行为模式(模板方法模式)

概念:

  定义一个操作中的算法骨架,而将一些步骤延伸到子类中去,使得子类可以不改变一个算法的结构,即可重新定义改算法的某些特定步骤。这里需要复用的是算法的结构,

也就是步骤,而步骤的实现可以在子类中完成。

使用场合:

1.一次性实现一个算法的不变部分,并且将可变的行为留给子类来完成。

2、各子类公共的行为应该被提取出来并集中到一个公共父类中以避免代码的重复。首先识别现有代码的不同之处,并且把不同部分分离为新的操作,最后用一个调用这些新的操作的模板方法来替换这些不同的代码。

3.控制子类的扩展


模板方法模式的组成:

父类角色:提供模板

子类角色:为模板提供实现


父类角色

 dataObject.h

*****************************************************************************************************************

#ifndef DATAOBJECT_H
#define DATAOBJECT_H
 
 
class DataObject
{
public:
    DataObject();
    virtual void Connect();
    virtual void Select();
    virtual void Process();
    virtual  void disconnect();
 
    void Run()
    {
        Connect();
        Select();
        Process();
        disconnect();
 
 
    }
 
 
};
 
#endif // DATAOBJECT_H
 ***************************************************************************************************** 

dataobject.cpp

*****************************************************************************************************

#include "dataobject.h"
 
DataObject::DataObject()
{
 
}
 
 void DataObject::Connect()
 {}
 void DataObject::Select()
 {}
 void DataObject::Process()
 {}
  void DataObject::disconnect()
  {}
 ********************************************************************************************* 

子类角色

custementconcreteobject.h

****************************************************************************************************************

#ifndef CUSTEMENTCONCRETEOBJECT_H
#define CUSTEMENTCONCRETEOBJECT_H
#include"dataobject.h"
#include<QString>
class CustementConcreteObject :public DataObject
{
public:
    CustementConcreteObject();
    void Connect();
    void Select();
    void Process();
    void disconnect();
private:
   QString connectionString;
   QString commandString;
 
 
};
 
#endif // CUSTEMENTCONCRETEOBJECT_H
 ***************************************************************************************************************** 

custementconcreteobject.cpp

***********************************************************************************************************************

#include "custementconcreteobject.h"
#include<QDebug>
CustementConcreteObject::CustementConcreteObject()
{
 
}
 
void CustementConcreteObject::Connect()
{
   qDebug()<<"connect";
}
 
void CustementConcreteObject::Select()
{
  qDebug()<<"Select";
}
 
void CustementConcreteObject::Process()
{
 qDebug()<<"Process";
}
 
void CustementConcreteObject::disconnect()
{
qDebug()<<"disconnect";
 
}
 *********************************************************************************************************************** 

客户端 main函数代码

main.CPP

************************************************************************************************************************

#include <QCoreApplication>
 
#include"custementconcreteobject.h"
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
    CustementConcreteObject *concreteobject = new CustementConcreteObject;
    concreteobject->Run();
    return a.exec();
}
 
 ******************************************************************************************************************* 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值