設計模式4——橋接模式

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   使用   2014   div   

當物體有幾種不同的屬性時,這時類的繼承就會變的多樣。

例如,一款手機按類型可分為功能機和智能機,按顏色可分為黑色、白色、紅色等,按品牌可分為蘋果、三星、小米等。

當屬性越多,則需要建立的類就更多,使用橋接模式能夠大大降低問題的複雜性,並且能夠極大程度降低耦合。

 

範例程式碼:

Bridge.h內容

 1 #ifndef Bridge_H_H 2 #define Bridge_H_H 3  4 #include <iostream> 5 using namespace std; 6  7 class Color 8 { 9 public:10     Color() {}11     virtual ~Color() {}12     virtual void display() = 0;13 };14 15 class ColorWhite : public Color16 {17 public:18     virtual void display() { cout << "Color is White!" << endl; }19 };20 21 class ColorBlack : public Color22 {23 public:24     virtual void display() { cout << "Color is Black!" << endl; };25 };26 27 class Phone28 {29 public:30     Phone() : color(NULL) {}31     virtual ~Phone() {}32     virtual void display() { color->display(); }33     void setColor(Color *color0){34         color = color0;35     }36 private:37     Color *color;38 };39 40 class FunctionalPhone : public Phone41 {42 public:43     virtual void display(){44         cout << "Type is Functional! ";45         Phone::display();46     }47 };48 49 class IntelligentPhone : public Phone50 {51 public:52     virtual void display(){53         cout << "Type is Intelligient! ";54         Phone::display();55     }56 };57 58 void BridgeTest()59 {60     Color *color1 = new ColorWhite();61     Color *color2 = new ColorBlack();62 63     Phone *phone1 = new FunctionalPhone();64     Phone *phone2 = new IntelligentPhone();65 66     phone1->setColor(color1);67     phone1->display();68     phone1->setColor(color2);69     phone1->display();70 71     phone2->setColor(color1);72     phone2->display();73     phone2->setColor(color2);74     phone2->display();75 }76 77 #endif

運行結果:

所設計的顏色和類型分別只有兩個,優勢體現不明顯,當每種類型繼承較多時,優勢將會很明顯。

假如類型和顏色分別有5種和7種,則5+7比5*7要小很多,結構也會更加清晰。

設計模式4——橋接模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.