大话设计模式_桥接模式c++实现

来源:互联网 发布:淘宝怎么删掉评价 编辑:程序博客网 时间:2024/06/06 18:47
//Abstraction.h#ifndef ABSTRACTION_H_#define ABSTRACTION_H_class AbstractionImp;class Abstraction{public:virtual void operation();protected:Abstraction();};<pre name="code" class="cpp">//Abstraction.cpp#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>using namespace std;Abstraction::Abstraction() {}void Abstraction::operation() {}RefinedAbstraction::RefinedAbstraction(AbstractionImp *imp) {_imp = imp;}void RefinedAbstraction::operation(){_imp->operation();}

class RefinedAbstraction :public Abstraction{public:RefinedAbstraction(AbstractionImp * imp);~RefinedAbstraction();void operation();private:AbstractionImp *_imp;};#endif
//AbstractionImp.h#ifndef ABSTRACTIONIMP_H_#define ABSTRACTIONIMP_H_class AbstractionImp{public:~AbstractionImp();virtual void operation() = 0;protected:AbstractionImp();};class ConcreteAbstractionImp :public AbstractionImp{public:ConcreteAbstractionImp();~ConcreteAbstractionImp();void operation();};#endif
//Abstraction.cpp#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>using namespace std;Abstraction::Abstraction() {}void Abstraction::operation() {}RefinedAbstraction::RefinedAbstraction(AbstractionImp *imp) {_imp = imp;}void RefinedAbstraction::operation(){_imp->operation();}
//AbstractionImp.cpp#include "AbstractionImp.h"#include <iostream>using namespace std;AbstractionImp::AbstractionImp() {}AbstractionImp::~AbstractionImp(){}void AbstractionImp::operation(){cout << "AbstractionImp...imp..." << endl;}ConcreteAbstractionImp::ConcreteAbstractionImp() {}ConcreteAbstractionImp::~ConcreteAbstractionImp() {}void ConcreteAbstractionImp::operation(){cout << "ConcreteAbstrationImp.." << endl;}
//main.cpp#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>using namespace std;int main(){AbstractionImp *imp = new ConcreteAbstractionImp();Abstraction *abs = new RefinedAbstraction(imp);abs->operation();system("pause");return 0;}




1 0