Bridge 设计模式

来源:互联网 发布:在淘宝上买黄金可靠吗 编辑:程序博客网 时间:2024/06/08 11:38
#include <iostream>using namespace std;class Implementor{public:Implementor() {};virtual ~Implementor() {};virtual void OperationImp() {};};class ConcreteImplementor1: public Implementor{public:ConcreteImplementor1(){};virtual ~ConcreteImplementor1() {};virtual void OperationImp(){cout<<"ConcreteImplementor1 Operation"<<endl;}};class ConcreteImplementor2: public Implementor{public:ConcreteImplementor2() {};virtual ~ConcreteImplementor2() {};virtual void OperationImp(){cout<<"ConcreteImplementor2 Operation"<<endl;}};class Abstraction{public:Abstraction(Implementor* imp):_implementor(imp){};virtual ~Abstraction() { delete _implementor;};virtual void Operation()=0;protected:Implementor * _implementor;}; class ConcreteAbstraction1: public Abstraction{public:ConcreteAbstraction1(Implementor* imp1):Abstraction(imp1) {};virtual ~ConcreteAbstraction1() {};virtual void Operation(){_implementor->OperationImp();cout<<"ConcreteAbstraction1 Operation"<<endl;}};class ConcreteAbstraction2: public Abstraction{public:ConcreteAbstraction2(Implementor* imp2):Abstraction(imp2) {}; //注意派生类转到基类virtual ~ConcreteAbstraction2() {};virtual void Operation(){_implementor->OperationImp();  //直接使用基类定义的,这样是否恰当? 或者直接跳过基类,派生类直接引用指针cout<<"ConcreteAbstraction2 Operation"<<endl;}};int main(int argc, char* argv[]){Implementor* tf=new ConcreteImplementor1();Abstraction* ft=new ConcreteAbstraction2(tf);ft->Operation();return 0;}

0 0
原创粉丝点击