前言
設計模式核心思想
- 高內聚, 低耦合
- 可擴展性: 方便迭代新功能;
- 可靠性: 迭代功能後不會影響已有功能;
- 可讀性: 編程規範, 方便同事閱讀理解;
- 代碼重用性: 不編寫相同代碼;
- 設計模式遵循的七大原則
- 單一職責
- 思想: 執行者只做一件事;
- 案例: Dao層裏的一個訂單mapper只做訂單表的相關的事, 但這個mapper裏同時又操作了用戶表就違背了單一 職責的思想;
- 違背 遵循
- 接口隔離
- 思想: 按方法用途將單個接口拆分成多個接口, 使類實現接口只實現, 類想用到的方法;
- 違背 遵循
- 依賴倒轉(面向接口編程)
- 思想: 調用方由調用提供者的底層類, 轉換成調用提供者的頂層接口/抽象類, 提供者傳遞實現類/子類到接口/抽象類, 實現多態動態加載;
- 案例: 方法中之前調用的是實現類, 用依賴倒轉後將調用實現類改爲調用接口;
- 違背 遵循
- 里氏替換
- 思想: 子類不要重寫父類方法, 子類和父類繼承基類實現邏輯解耦;
- 案例: eat()只有父類有, 但開發中子類不小心寫了一個與父類相同名字的eat()(無意識重寫方法), 在用子類對象調用父類的eat()時, 調用的卻是子類重寫後的方法;
- 違背 遵循
- 迪米特法則
- 思想: 最少知道法則, 調用方無需知道被調用對象的具體實現細節,被調用的對象對外只提供訪問功能的方法;
- 拓展
- 直接朋友: 本類的參數, 方法返回值, 成員變量;
- 其他朋友: 出現在本類的局部方法中與本類不相關的局部變量;
- 違背 遵循
- 開閉原則(OCP原則)
- 思想: 提供方修改代碼後不應該改動調用方的代碼;
- 違背 遵循
- 合成複用
- 思想: 要想使用其他類的方法, 要用組合/聚合的方式, 而不是用繼承的方式實現;
- 組合: 外部類對象隨本類的實例而實例, 外部類對象以成員屬性的方式存在(和本類同生死);
- 聚合: 外部類對象通過賦值的方式在本類中進行實例(外部對象聚集合併到本類);
- 依賴: 本類使用到外部類就表示本類依賴調用了外部類;
- 說明
UML類圖
- 畫類圖
- 描述一個類
- 線性說明
- 練習
學習期間使用到的工具
- XMind 思維導圖(筆記)
- Snipaste 截圖
- 在線UML類圖
- GitHub: https://github.com/HackDream2018/netty_lecture.git 案例包: test.designpattern
設計模式有3類
- 創建型
- 結構型
- 行爲型