Qt C++ bridge模式(桥)

来源:互联网 发布:荷塘月色淘宝 编辑:程序博客网 时间:2024/06/06 07:06

Bridge模式使得抽象和实现能够相对独立。

bridge.h

#pragma once


#include <QDebug>


class CImplementor
{
public:
virtual void operateImp() = 0;
};


class CRectImplementor : public CImplementor
{
public:
CRectImplementor(){}
void operateImp()
{
qDebug() << "this is a Rect";
}
};


class CEllipseImplementor : public CImplementor
{
public:
CEllipseImplementor(){}
void operateImp()
{
qDebug() << "this is a ellipse";
}
};


class CAbstractExecute
{
public:
virtual void operate() = 0;
virtual void setImp(CImplementor *imp) = 0;
};


class CExecute : public CAbstractExecute
{
public:
CExecute(CImplementor *imp):_imp(imp){};


void operate();
void setImp(CImplementor *imp)
{
_imp = imp;
}
private:
CImplementor *_imp;
};

bridge.cpp

#include "bridge.h"


void CExecute::operate()
{
if (_imp)
_imp->operateImp();
}

main.cpp

#include <QApplication>
#include "bridge.h"


int main(int argc,char **argv)
{
QApplication app(argc,argv);

CImplementor* rect_imp = new CRectImplementor;
CImplementor* ellipse_imp = new CEllipseImplementor;
CAbstractExecute* exe = new CExecute(rect_imp);
exe->operate();
exe->setImp(ellipse_imp);
exe->operate();
delete exe;
delete ellipse_imp;
delete rect_imp;
return app.exec();
}

原创粉丝点击