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();
}