1.什麼是設計模式?
模式:在某些場景下,針對某類問題的某種通用解決方案
場景:項目環境
問題:約束條件,項目目標等
解決方案:通用、可以複用的設計,解決約束,達到目標
2.設計模式的分類
創建型模式:對象實例化的模式,創建型模式解耦了對象的實例化過程
結構型模式:把類或對象結合在一起形成更大的結構
行爲型模式:類和對象如何交互,及劃分責任和算法
3.對象設計的6大原則
- 組合複用原則
多用組合,少用繼承
找到變化部分,抽象,封裝變化
區分“Has-A”與“Is-A” - 依賴倒置原則
依賴:成員變量、方法參數、返回值
要依賴於抽象,不要依賴於具體
高層模塊不應該依賴低層模塊,二者都應該依賴其抽象
抽象不應該依賴具體,具體應該依賴抽象
針對接口編程,不要針對實現編程 - 開閉原則
對擴展開放,對修改關閉
通過擴展已有軟件系統,可以提供新的功能
修改的關閉,保證穩定性和延續性 - 迪米特法則
一個對象應該與其他對象保持最少的瞭解。只與直接朋友交談。
成員變量、方法參數、方法返回值中需要的類爲直接朋友
類與類之間的關係越密切瞭解越多,耦合度越大
儘量降低類與類之間的耦合
外觀模式、中介者模式 - 里氏替換原則
所有引用基類的地方必須能透明地使用其子類對象
子類在擴展父類功能時不能破壞父類原有的功能
使用繼承時,遵循里氏替換原則:
子類可以實現父類的抽象方法,但不能覆蓋父類的非抽象方法。
當子類重載父類方法時,方法的形參要比父類方法的參數更寬鬆
當子類實現父類的抽象方法時,方法的返回值要比父類更嚴格 - 單一職責原則
類應該只有一個導致類變更的理由
即一個類只負責一項職責