設計模式學習**倉庫如下:
設計模式學習筆記
物件導向基本設計原則
高層模組不應該依賴於底層模組,兩者都應該依賴於抽象
如: 介面展示不應該依賴於內部實現類,應該依賴於整體抽象的抽象類
抽象不應該依賴於實現細節,實現細節應該依賴於抽象
抽象依賴於實現細節就會穩定容易出問題,拿出穩定部分抽象出來,總之要實現隔離變化。
總的來說,底層模組的變更會直接影響到高層模組,如果每次改動的底層模組會讓高層模組直接變的不穩定,這樣使得整體不穩定,所以來說需要盡量 的隔離變化,讓高層模組不依賴於底層模組,這樣復用高層模組的時候很簡單也可以被復用。
簡單的說是這樣的首先細節應該分離出來,找到中間的穩定部分製作抽象類,然後來實現各自操作,抽象類需要盡量穩定不修改,也就是讓實現細節依賴抽象類(穩定)
對擴充套件開放,對更改封閉
類模組應該是可擴充套件的,但是不可修改的。
即程式具有一定的擴充套件效能允許擴充套件操作,大多數的方法還是 使用抽象類,不同的操作方式通過過載抽象類實現,這樣實現了擴充套件性。總的來說抽象類需要設計的足夠穩定,如果抽象類需要頻繁的修改,整體也會變得不穩定。
乙個類應該僅有乙個引起它變化的原因
變化的方向隱含類的責任
子類必須要能夠替換他們的基類,即父類所有方法子類都能正常使用
也就是說子類繼承父類 應該是在父類的職責上擴充套件 而不是實現新的功能,也就是父類的介面在子類中都是有用的。
不應該強迫客戶程式依賴他們不用的方法,除非是可以給外部使用的介面,其他介面盡量不要暴露出去,
能使用類裡面包含另乙個類的方式,就不要使用繼承,因為繼承從某種程度破壞了封裝, 繼承的許可權相對直接包含 成員的許可權不一樣
通過組合的方式能更加的減少重複,提高復用性 比如裝飾模式,通過提供基類指標 然後繼承基類的方式 然後讓內部的基類指標指向實現類實現最原始基類額外操作的方式來實現提高復用性。
使用封裝來建立物件之間的分界層,讓設計者可以在分界的一側進行修改,而不會對另一側產生不良的影響,從而實現物件的松耦合
(暫未理解)
不將變數型別宣告為某個特定的具體類,而是宣告為某個介面。
客戶程式不需要知道物件的具體型別,只需要知道物件所具有的介面。
實際上還是將功能抽象使用基類的介面,子類實現這樣就實現通用性,且使用的地方無需關注實現方式。實現了高聚合,低耦合。
詳細:
設計模式學習記錄
工廠模式 實際上是把乙個類的例項化通過乙個工廠類來推遲例項化,例項化的過程是通過實現介面來返回乙個型別。這樣做的弊病是乙個類只能返回一種型別,如果過載就會形成命名衝突,所以更常用的是在工廠類裡面新增多個靜態的實現方法,這樣就可以實現各種不同的型別了。抽象工廠 抽象工廠就是在實現介面裡面包含了各種類似...
設計模式學習記錄
策略顧名思義 指計策 謀略。一般是指 1.可以實現目標的方案集合 2.根據形勢發展而制定的行動方針和鬥爭方法 3.有鬥爭藝術,能注意方式方法。做一件事我已經有多中方案,選擇執行。個人覺得策略和簡單工廠特別像。但是區別在於。我簡單工廠不需要知道我所有產品方案使人們。需要什麼就造什麼。但是策略要明白。還...
設計模式學習記錄
物件導向程式設計 三大特徵 封裝,繼承,多型 目的 易維護,易擴充套件,易復用,靈活性強 設計模式 六大原則 單一職責原則 就乙個類而言,應該僅有乙個引起它變化的原因.開發 封閉原則 是說軟體實體 類,模組,函式等等 應該可以擴充套件,但不可以修改.特徵 對於擴充套件開發 open for exte...