Bridge方式C++代码
Bridge模式C++代码
Main 文件代码
H 文件
#ifndef Rectangle_h #define Rectangle_h class Drawing { public: virtual void drawLine() = 0; virtual void drawCircle() = 0; }; class V1Drawing:public Drawing { public: void drawLine(); void drawCircle(); }; class V2Drawing:public Drawing { public: void drawLine(); void drawCircle(); }; class Shape { public: Shape(Drawing* cDrawing) { m_pDrawing = cDrawing; } virtual void draw()=0; protected: void drawLine(); void drawCircle(); private: Drawing* m_pDrawing; }; class Rectangle: public Shape { public: Rectangle(Drawing* pDrawing):Shape(pDrawing){} void draw(); }; class Circle: public Shape { public: Circle(Drawing* pDrawing):Shape(pDrawing){} void draw(); }; #endif
#include "Rectangle.h" #include "iostream" using namespace std; void V1Drawing::drawLine() { cout<<"V1Drawing::void drawLine()"<<endl; } void V1Drawing::drawCircle() { cout<<"V1Drawing::void drawCircle()"<<endl; } void V2Drawing::drawLine() { cout<<"V2Drawing::void drawLine()"<<endl; } void V2Drawing::drawCircle() { cout<<"V2Drawing::void drawLine()"<<endl; } void Shape::drawLine() { m_pDrawing->drawLine(); } void Shape::drawCircle() { m_pDrawing->drawCircle(); } void Rectangle::draw() { drawLine(); } void Circle::draw() { drawCircle(); }
Main 文件代码
#include "iostream" #include "Rectangle.h" using namespace std; void main(void) { Drawing* pV1Drawing = new V1Drawing; Drawing* pV2Drawing = new V2Drawing; Rectangle cRectangle1(pV1Drawing); cRectangle1.draw(); Rectangle cRectangle2(pV2Drawing); cRectangle2.draw(); Circle cCircle1(pV1Drawing); cCircle1.draw(); Circle cCircle2(pV2Drawing); cCircle2.draw(); delete pV1Drawing; delete pV2Drawing; }