C++实现桥接模式

来源:互联网 发布:如何和程序员谈恋爱 编辑:程序博客网 时间:2024/05/17 06:38
/*桥接模式:将抽象部分与它的实现部分相分离,他们可以独立变化。合成/聚合复用原则CARP原则:面向对象设计的一个重要原则:尽量使用合成/聚合,尽量不用使用类的继承优点:(1)分离抽象接口及其实现部分。 (2)桥接模式有时类似于多继承方案,但是多继承方案违背了类的单一职责原则(即一个类只有一个变化的原因),复用性比较差,而且多继承结构中类的个数非常庞大,桥接模式是比多继承方案更好的解决方法。 (3)桥接模式提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统。 (4)实现细节对客户透明,可以对用户隐藏实现细节。 应用举例:一个画板的形状可以是圆形的,正方形的,颜色可以是红色,绿色,那要求一个实现一个画板就可以采用桥接模式Created by Phoenix_FuliMa*/#include <iostream>using namespace std;class Implementor{public:virtual void Show() {}};class Implementor1:public Implementor{public:virtual void Show(){cout<<"Implementor1 is showing..."<<endl;}};class Implementor2: public Implementor{public:virtual void Show(){cout<<"Implementor2 is showing.."<<endl;}};class Abstractor{Implementor *_implementor;public:virtual void SetImplementor(Implementor* ot){this->_implementor = ot;}virtual void operate(){_implementor->Show();}};class RefinedAbstractor:public Abstractor{};int main(){Implementor1 * im1 = new Implementor1();Implementor2 * im2 = new Implementor2();RefinedAbstractor *re = new RefinedAbstractor();re->SetImplementor(im1);re->operate();re->SetImplementor(im2);re->operate();delete im1;delete im2;delete re;system("pause");return 0;}