/*abstraction.h*/#ifndef Abstraction_h#define abstraction_hClass Abstractionimp;class abstraction{ Public:Virtual~Abstraction();Virtual voidOperation () =0;protected:Abstraction();Private:};class refinedabstraction: Publicabstraction{ Public:refinedabstraction(Abstractionimp *imp); ~refinedavstraction ();voidOperation ();protected:Private: Abstractionimp *imp_;};#endif
/*Abstraction.cpp*/#include "Abstraction.h"#include "AbstractionImp.h"#include <iostream>Abstraction::Abstraction(){}Abstraction::~Abstraction(){}RefinedAbstraction::RefinedAbstraction(AbstractionImp *imp){ imp_=imp;}RefinedAbstraction::~RefinedAbstraction(){}void RefinedAbstraction::Operation(){ imp_->Operation();}
/*abstractionimp.h*/#ifndef Abstractionimp_h#define abstractionimp_hClass abstractionimp{ Public:Virtual~Abstractionimp();Virtual voidOperation () =0;protected:Abstractionimp();Private:};class Concreteabstractionimpa: Publicabstractionimp{ Public:Concreteabstractionimpa(); ~concreteabstractionimpa ();Virtual voidOperation ();protected:Private:};class CONCRETEABSTRACTIONIMPB: Publicabstractionimp{ Public:CONCRETEABSTRACTIONIMPB(); ~CONCRETEABSTRACTIONIMPB ();Virtual voidOperation ();protected:Private:};#endif
/*abstractionimp.cpp*/#include"Abstractionimp. h"Abstractionimp:: Abstractionimp (){}Abstractionimp::~Abstractionimp(){}void Abstractionimp:: Operation (){ std::cout<<"Abstractionimp ..."<<std::endl;} Concreteabstractionimpa:: Concreteabstractionimpa (){}Concreteabstractionimpa::~Concreteabstractionimpa(){}void Concreteabstractionimpa:: Operation (){ std::cout<<"Concreteabstractionimpa ..."<<std::endl ; }CONCRETEABSTRACTIONIMPB:: CONCRETEABSTRACTIONIMPB (){}CONCRETEABSTRACTIONIMPB::~CONCRETEABSTRACTIONIMPB(){}void CONCRETEABSTRACTIONIMPB:: Operation (){ std::cout<<"CONCRETEABSTRACTIONIMPB ..."<<std::endl ; }
/*main.cpp*/#include "Abstraction.h"#include "AbstracionImp.h"int main(){ AbstractionImp *imp=new ConcreteAbstractionImpA(); Abstraction *abs=new RefinedAbstraction(imp); abs->Operation(); return0;}
Bridge pattern (Bridging mode)