您的位置:首页 > 其它

每天一个设计模式: 桥模式(Bridge)

2016-01-11 16:34 429 查看
#ifndef ABSTRACTION_H
#define ABSTRACTION_H

class AbstractionImp;

class Abstraction
{
public:
virtual ~Abstraction() = 0;
virtual void Operation() = 0;
protected:
Abstraction();
private:
};

class RefinedAbstraction: public Abstraction
{
public:
RefinedAbstraction(AbstractionImp* imp);
~RefinedAbstraction();
void Operation();
protected:
private:
AbstractionImp* _imp;
};

#endif // ABSTRACTION_H

#include "abstraction.h"

#include "abstractionimp.h"

Abstraction::Abstraction()
{
}

Abstraction::~Abstraction()
{

}

RefinedAbstraction::RefinedAbstraction(AbstractionImp *imp)
{
this->_imp = imp;
}

RefinedAbstraction::~RefinedAbstraction()
{

}

void RefinedAbstraction::Operation()
{
this->_imp->Operation();
}

#ifndef ABSTRACTIONIMP_H
#define ABSTRACTIONIMP_H

class AbstractionImp
{
public:
virtual ~AbstractionImp();
virtual void Operation() = 0;
protected:
AbstractionImp();
private:
};

class ConcreteAbstractionImp: public AbstractionImp
{
public:
ConcreteAbstractionImp() ;
~ConcreteAbstractionImp();
virtual void Operation();
protected:
private:
};

#endif // ABSTRACTIONIMP_H

#include "abstractionimp.h"

#include <iostream>

AbstractionImp::AbstractionImp()
{
}

AbstractionImp::~AbstractionImp()
{
}

ConcreteAbstractionImp::ConcreteAbstractionImp()
{

}

ConcreteAbstractionImp::~ConcreteAbstractionImp()
{

}

void ConcreteAbstractionImp::Operation()
{
std::cout<<"ConcreteAbstractionImp"<<std::endl;
}

#include <iostream>

#include "abstraction.h"
#include "abstractionimp.h"

using namespace std;

int main()
{
AbstractionImp* imp = new ConcreteAbstractionImp();

Abstraction* abs = new RefinedAbstraction(imp);

abs->Operation();

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: