第二十二章 橋接模式

2022-09-11 05:00:16 字數 1185 閱讀 3743

很多情況下用繼承會帶來麻煩。比如,物件的繼承關係是在編譯時就定義好了的,所以無法在執行時改變從父類繼承的實現。子類的實現與它的父類有非常緊密的依賴關係,以至於父類實現中的任何變化必然會導致子類發生變化。當你需要復用子類時,如果繼承下來的實現不適合解決新的問題,則父類必須重寫或被其他更適合的類替換。這種依賴關係限制了靈活性並最終限制了復用性。

在物件導向設計中,還有乙個很重要的設計原則,就是合成/聚合復用原則,即優先使用物件合成/聚合,而不是類繼承,繼承是一種強耦合的結構

合成/聚合復用原則(carp):盡量使用合成/聚合,盡量不要使用類繼承。

合成(composition, 也有翻譯成組合)和聚合(aggregation)都是關聯的特殊種類。聚合表示一種弱的『擁有』關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分;合成則是一種強的『擁有』關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。

合成/聚合復用原則的好處是,優先使用物件的合成/聚合將有助於你保持每個類被封裝,並被集中在單個任務上,這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。

合成/聚合結構圖

橋接模式

橋接模式(bridge):將抽象部分與它的實現部分分離,使它們都可以獨立地變化。實現指的是抽象類和它的派生類用來實現自己的物件。通俗一點說就是實現系統可能有多角度分類,每一種分類都有可能變化,那麼就把這種多角度分離出來讓它們獨立變化,減少他們之間的耦合。

基本**

#include using namespace std;

class implementor

;class concreteimplementora :public implementor

};class concreteimplementorb :public implementor

};class abstraction

virtual void operation() };

class refinedabstraction :public abstraction

};int main()

手機設計結構圖演變

第二十二章 Teamware需求

teamware正如他的名字一樣,是乙個團隊使用的groupware。groupware的定義是 teamware的功能需求 公共功能 使用者管理 角色管理 客戶管理 crm 專案管理 安全 授權和認證 業務功能 公告欄 notice 位址本 address book todo列表 todo lis...

第二十二題

第二十二題 韓信點兵 在中國數學史上,廣泛流傳著乙個 韓信點兵 的故事 韓信是漢高祖劉邦手下的大將,他英勇善戰,智謀超群,為漢朝建立了卓越的功勞。據說韓信的數學水平也非常高超,他在點名的時候,為了知道有多少兵,同時又能保住軍事機密,便讓士兵排隊報數 按從1到5報數,記下最末乙個士兵報的數為1 按從1...

第二十二章 DOM 元素尺寸和位置

學習要點 1.獲取元素 css 大小 2.獲取元素實際大小 3.獲取元素周邊大小 本章,我們主要討論一下頁面中的某乙個元素它的各種大小和各種位置的計算方式,以便更好的理解。一 獲取元素 css 大小 1.通過 style 內聯獲取元素的大小 var box document.getelementby...