c 橋接模式例項

2021-08-10 19:08:35 字數 1363 閱讀 7371

橋接模式的uml如下圖

為了解決多個變數存在的時候出現的耦合問題,類按照自己的因素抽象出介面,同時在abstraction類中存在impletor 抽象類的指標,

abstraction的具體實現中呼叫該指標的介面 函式。

現有下問題,影象吸收的能量跟圖形的顏色有關,同時跟圖形的面積相關。假設有紅色和黑色的矩形和圓,要分別計算在給定乙個顏色能量因子的時候他的能量大小。

首先定義乙個抽象類shape,並定義shape計算面積的介面函式get_erea:

class shape

;

接著給出矩形和圓的實現

class circle:public shape

float get_erea()

private:

float radius;

};class rect:public shape

float get_erea()

private:

float width;

float height;

};

然後定義乙個energy的抽象類,他的資料成員包含乙個shape型別的指標。並給出了乙個計算能量的介面虛函式 calculate_energ_fac()

class energy

virtual

float calculate_energ_fac()=0;

protected:

shape *pshape;

};

下面會實現紅色和黑色形狀計算能量的類,其實可以在乙個類裡面實現,只是能量因子不同:

class redenergy:public energy

float calculate_energ_fac()

private:

float factor;

};class blackenergy:public energy

float calculate_energ_fac()

private:

float factor;

};

最後的客戶端呼叫程式:

class redenergy:public energy

float calculate_energ_fac()

private:

float factor;

};class blackenergy:public energy

float calculate_energ_fac()

private:

float factor;

};

執行結果如下:

橋接模式 C

橋接模式 將抽象部分和實現部分分離,使它們可以獨立變換.屬於結構型模式.目的 在有多種可能變化情況下,使用繼承可能會造成類 的問題,擴充套件起來不靈活.使用場景 優點 缺點 介面耦合,而不是實現耦合.整個關鍵就是組合的使用.當有多維度變化時,可以考慮使用橋接模式.include 抽象介面 publi...

c 設計模式 橋接模式

橋接模式在介面卡模式上做了一定的擴充套件。橋接是計算機網路中的用語,本意是指通過網橋把兩個區域網連線在一起。假如同時有a和b兩個抽象類,在a中包含了b的指標,那麼就好像把a和b兩個類結合在了一起,於是叫做橋接模式。例如葡萄,可以有青葡萄,紫葡萄,而酒可以有低度數酒,高度數酒。把兩個類結合在一起,就可...

C 設計模式 橋接模式

橋接模式 bridge 將抽象部分與它的實現部分分離,使得他們都可以獨立的變化 橋接模式.cpp 此檔案包含 main 函式。程式執行將在此處開始並結束。include using namespace std class handsetsoft 手機軟體 class handsetgame publ...