《設計模式》學習筆記 設計模式怎樣解決設計問題

2021-08-25 01:45:56 字數 1846 閱讀 1182

1.1 設計模式怎樣解決設計問題

1.1.1 尋找合適的物件

物件導向設計最困難的部分是將系統分解為物件的集合。

設計的許多物件**於現實世界的分析模型,這裡和領域驅動設計有點關聯。分析所得到的類,很多事現實中並不存在的類。這是抽象的結果。設計中的抽象對於產生靈活的設計至關重要。就像我設計的乙個流程排程模型。

1.1.2 決定物件的粒度

記筆記可以讓我達到沉流的狀態。

1.1.3 指定物件介面

1.1.4 描述物件實現

omt表示法:

1、 物件:最上面的黑體表示類名,下面依次是操作,資料。

2、 例項化:虛線箭頭表示乙個類例項化另外乙個物件。

3、 繼承:豎線和三角表示繼承關係。

4、 抽象類:類名以黑體斜體表示,操作也用斜體表示。

5、 引用

箭頭加黑點表示乙個類引用另外乙個類。

重點:

1、 類的繼承和介面繼承的比較

物件的類和物件的型別的區別:

物件的類定義了物件是怎樣實現的,同時也定義了物件內部狀態和操作的實現。物件的型別只與它的介面有關。乙個物件可以由多個型別(支援多個介面),不同類的物件可以有相同的型別。

類和型別緊密相連,類定義了物件的操作,也定義了物件的型別。

類的繼承和介面的繼承的差別:

c++中介面繼承接近於公有繼承純抽象類。純實現繼承或純類繼承接近於私有繼承。

2、 對介面程式設計,而不是對實現程式設計——物件導向設計的第乙個原則

1.1.5 運用復用機制

1、 繼承和組合的比較

繼承是一種白箱復用,父類的內部細節對子類可見。

物件組合彼此不知道對方內部細節,成為黑箱復用。

繼承的優缺點:

1) 子類可以直接重定義父類的操作。

2) 編譯時刻決定了,無法在執行期間更改。

3) 子類要知道父類的實現細節,這樣就部分破壞了封裝性。子類和父類依賴過於緊密,父類的某些變化必然導致子類的變化。開發過程中遇到過類似的問題。這種依賴,限制了靈活性以及復用性。比如,服務體系中經常出現這樣的問題,導致**拷貝。

組合(通過獲得物件的引用而在執行時刻動態的定義)的優缺點:

1) 物件間通過介面彼此互動。

2) 物件只能通過介面訪問,不要也不能知道對方細節,這樣不會破壞封裝性。

3) 執行時刻可以使用另外乙個物件替換這個物件,提高了靈活性。

4) 物件的實現基於介面編寫,所以實現上存在較少的依賴關係。

5) 優先使用組合有助於保持每個類被封裝,並被集中在單個任務上,提高整體內聚性。類和類的層次都維持乙個較小的規模,

6) 基於物件組合的設計會有更多的物件(而又較少的類),且系統的行為依賴於物件間的關係而不是定義在某個類的內部。

理想的情況下,應該通過組合原有構件實現新的功能,而不是建立新的構件。

物件導向設計的第二個原則:優先使用物件組合,而不是類繼承。

2、 委託

委託時一種組合方法,它是組合具有與繼承同樣的能力。

委託的主要優點在於它便於在執行時刻組合物件操作,以及更改操作的組合方式。它是軟體更加的靈活。

和其他的技術方案相同,它也存在不足之處:增加了軟體的複雜度——動態的,高度引數化的軟體比靜態的軟體更難於理解。

3、 繼承和引數化型別的比較

1.1.6 關聯執行時刻的結構和編譯時刻的結構

1.1.7 設計應支援變化

設計應該支援變化——所說的是,乙個設計方案,對變化要有一定的適應性,即封裝變化。

變化是導致重新設計的原因。設計要對一定範圍內的變化友好。

4、 對於程式的分層設計,對於處於同一分層的模組,對外應保持一定的抽象,並且,使用同種型別的通訊協議。

《設計模式》學習筆記 設計模式怎樣解決設計問題

1.1 設計模式怎樣解決設計問題 1.1.1 尋找合適的物件 物件導向設計最困難的部分是將系統分解為物件的集合。設計的許多物件 於現實世界的分析模型,這裡和領域驅動設計有點關聯。分析所得到的類,很多事現實中並不存在的類。這是抽象的結果。設計中的抽象對於產生靈活的設計至關重要。就像我設計的乙個流程排程...

設計模式學習筆記 設計模式概述

設計模式 design pattern 是一套被反覆使用 多數人知曉的 經過分類編目的 設計經驗的總結。使用設計模式是為了可重用 讓 更容易被他人理解 保證 可靠性。毫無疑問,設計模式於己於他人於系統都是多贏的 設計模式使 編制真正工程化 設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。設計模式一...

設計模式學習筆記(一) 設計模式

3 常用設計模式 4 設計模式用途 5 總結 軟體開發技術包含 招式 與 內功 其中,程式語言,開發技術,著名框架可以認為是 招式 而資料結構,演算法,設計模式,重構,軟體工程等則為 內功 招式 可以很快學會,但是 內功 的修煉需要更長的時間。對設計模式的學習會令 內功 大增,配合日益純熟的 招式 ...