設計模式大綱
- 對接口編程而不是實現編程
- 優先使用對象組合而不是繼承
- 設計模式提供軟件開發常面問題的最優解
- 23種設計模式分爲Creational Paterns,Structural Patterns,Behavioral Patterns
設計模式六大原則
- 開閉原則
程序要想易拓展,必須支持熱拔插,用接口和抽象類實現功能拓展,不許修改源碼
- 里氏替換原則
多態核心思想.用於實現開閉原則.任何父類能出現的地方,子類一定能出現且不出問題.
- 依賴倒轉
針對接口編程,依賴於抽象而不是具體
- 接口隔離原則
將功能拆成多個相互隔離的接口.降低類之間的耦合度.
- 迪米特法則,最少知道
一個實體最好儘可能少地與其他實體發生作用,少用其他實體或少被其它實體用
- 合成複用原則(單一職責)
繼承是耦合度最高的一種關係,嚴重破壞高內聚低耦合的設計.我們要儘可能使用合成/聚合,真要繼承最好只繼承抽象類.一個內聚的類最好只有一個引起它變化的外在原因.內聚性不強的就不要寫到一個類中.
精簡版:設計模式就是講如何更好地搞對象
創建型:對象怎麼來的
結構型:對象和誰有關係
行爲型:對象與對象在幹嘛
J2EE模式:表示層,對象合起來要幹嘛,行爲型的升級.
- SRP 儘量聚合/組合,繼承抽象類,一個接口對應一種變化
- OCP 熱拔插,提高可拓展.需要用到LSP,DIP,SRP
- LSP 多態,父子類相互轉型
- DIP 針對接口編程,內部實現無論怎麼改,接口輸出不變,掉用該接口的類就不會變
- ISP 接口要隔離,不同的功能要寫成不同的接口,單獨設計.
- DP/LKP 最少知道,即少出現別的類的實體