桥接模式 Bridge

来源:互联网 发布:程序员的自我修养 git 编辑:程序博客网 时间:2024/06/05 18:08

意图:

    将抽象部分与它的实现部分分离,使得它们都可以独立的变化。

结构:


    上图结构中将抽象部分(CShape的子类型)与它的实现部分(画图程序)进行解耦,也就是让

    将变化隔离开,仅仅是产生线性增加,那么桥接也就是分解。

代码:

class CShape{public:    CShape(CShape* pd);    virtual void draw()=0;protect:    void drawLine();    void drawCircle();private: CDrawing * m_pd;}CShape::CShape(CShape *pd){    m_pd =dp;}void CShape::drawLine(){    m_pd->drawLine();}void CShape::drawCircle(){    m_pd->drawCircle();}class CRectangle:public CShape{public:    CRectangle(CDrawing * pd):CShape(pd){};    void draw(){drawLine();}}class CCircle:public CShape{public:    CCircle(CDrawing * pd):CShape(pd){};    void draw(){drawCircle();}}class CDrawing{public:    virtual void drawCircle()=0;    virtual void drawRectangle()=0;}class CDP1;class CDP2;class CV1Drawing:public CDrawing{public:    void drawCircle(){ m_objDp1.drawACircle();}    void drawRectangle(){m_objDp1.drawALine();}private:    CDP1 m_objDp1;}class CV2Drawing:public CDrawing{public:    void drawCircle(){ m_objDp2.drawCircle();}    void drawRectangle(){m_objDp2.drawLine();}private:    CDP2 m_objDp2;}
总结:在需求定义的过程中,尽早,经常的研究变化,分解变化。
0 0
原创粉丝点击