學習了兩周的設計模式,感覺《大話設計模式》這本書確實不錯,記了點筆記,方便以後檢視。
單一職責原則:如果乙個類承擔的職責承過多,就等於把這些職責耦合在一起,乙個職責的變化可能會消弱或者抑制這個類完成其它職責的能力,這種耦合會倒置脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。
開放-封閉原則:對擴充套件開放(open for extension),對更改封閉(closed for modification)。無論模組多麼「封閉」,都會存在一些無法對之封閉的變化。既然不能完全封閉,設計人員必須對於他所設計的模組應該對哪種變化封閉做出選擇,他必須先先猜測出最發生變化的種類,然後構造抽象來隔離那些變化。
依賴倒轉原則:(1)高層模組不應該依賴低層模組。兩個都應該依賴抽象;(2)抽象不應該依賴細節,細節應該依賴抽象。
黎克特制替換原則:乙個軟體例項如果適用乙個父類的話,那麼一定適用其子類,而且它覺查不出父類物件和子類物件的區別。也就是說,在軟體裡面,把父類替換成它的子類,程式的行為沒有變化。
正是由於子型別的可替換性才使得使用父類型別的模組在無需修改的情況下就可以擴充套件。
依賴倒轉其實可以說是物件導向設計的標誌,用哪種語言來編寫程式不重要,如果編寫的時候考慮的都是如何針對抽象程式設計而不是針對細節程式設計,即程式中所有的依賴關係都是終止於抽象類或者介面,那就是物件導向的設計,反之,那就是過程化了的設計。
迪公尺特法則(lod):也叫最少知識原則。如果兩類不必直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果乙個類需要呼叫另乙個類的方法,可對通過第三個類**這個呼叫。在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權。類之間的耦合越弱,越有利於復用。乙個處於弱耦合的類被修改,不會對有關係的類造成波及。
合成/聚合復用原則(carp):盡量使用合成/聚合,盡量不要使用類繼承。聚合表現的是一種弱的「擁有」關係,體現的是a物件可以包含b物件,但b物件不是a物件的一部分;合成則是強的一種「擁有」關係,體現了嚴格的部分和整體的關係,部分和整體的生命週期一樣。
優先使用合成/聚合將有助於你保持每個類被封裝,並被集中的單個任務上。這樣類和類繼承層次會保持較小規模,並且不太可能增長為不可控制的龐然大物。
設計模式學習筆記(一) 設計模式
3 常用設計模式 4 設計模式用途 5 總結 軟體開發技術包含 招式 與 內功 其中,程式語言,開發技術,著名框架可以認為是 招式 而資料結構,演算法,設計模式,重構,軟體工程等則為 內功 招式 可以很快學會,但是 內功 的修煉需要更長的時間。對設計模式的學習會令 內功 大增,配合日益純熟的 招式 ...
設計模式筆記(一) 設計原則
類 物件之間的關係 generalization 泛化 dependency 依賴 association 關聯 aggregation 聚合 composition 組合 合成 泛化 表示類之間是is a關係,如類a繼承了b類或實現了b介面,子類會繼承父類的屬性和方法。依賴 表示類之間是use a...
設計模式筆記一(strategy pattern)
正式步入碼工界,遇到第乙個問題就是refractor老的project,讓支援新的功能和策略。無路可退,便踏上了學習設計模式的征程 路漫漫其修遠兮.言歸正傳,第乙個學習的物件是strategy pattern,策略模式。個人知識有限,於是乎,請教一下wikipedia,找到其定義如下 策略模式作為軟...