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

来源:互联网 发布:推荐书单 知乎 编辑:程序博客网 时间:2024/06/18 01:24
#ifndef ABSTRACTION_H#define ABSTRACTION_Hclass 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_Hclass 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;}

0 0
原创粉丝点击