設計模式之設計原則及工廠模式覆盤
阿新 • • 發佈:2022-01-06
設計原則
開閉原則
- 指系統對擴充套件開放,對修改關閉。
- 通過繼承擴充套件,而不是修改已有業務。
依賴倒置原則
- 高層模組不應依賴底層模組,兩者都應該依賴抽象。
- 抽象不應依賴細節,而細節應該抽象。
單一職責
- 一個類有且僅有一個導致其改變的原因。
介面隔離原則
- 將不同的業務抽象到不同的介面中。
迪米特法則(最少知道原則)
- 規定只和朋友通訊,而不和陌生人通訊。
里氏替換原則
- 子類可實現父類的抽象方法,不能覆蓋父類非抽象方法。
- 子類可擁有屬於當前的特有方法。
- 當子類過載父類方法時,方法前置條件【傳入引數】要比父類寬鬆。
- 當子類過載父類方法時,方法後置條件【返回引數】要比父類嚴格。
複合複用原則
- 推薦首先使用組合方法構建實現,其次使用繼承。
- 三種方式:
- is - 繼承
- has - 注入【使用提供】
- contains - 擁有【類內部擁有】
總結
- 設計模式是前人在長期實踐過程中,總結出的一套軟體設計規範。
- 設計模式是一種設計思想,具體需結合實踐情況做相應的取捨,而不是完全遵守設計原則。
- 設計模式提高系統可維護性,增加程式可擴充套件性,降低類之間耦合,提升程式碼可複用性。
工廠模式
- 工廠模式是屬於設計模式中的建立型模式,將物件的建立封裝在相應工廠中,客戶端只需從工廠獲取產品,無需知道產品的建立細節,符合設計原則中迪米特法則(最少知道原則)。
- 工廠模式實分為簡單工廠、工廠方法及抽象工廠三種實現方式。
簡單工廠
- 該實現方法相對簡單,僅由一個工廠負責所有產品的建立,客戶端只需提供產品名稱便可獲取到相應產品。
- 由於所有產品都在一個工廠建立,當產品增加且建立過程變得複雜時,工廠類變得臃腫且複雜,不便於後期維護。
- 該方式每當需求變更時,必須修改已有程式才能滿足新產品建立,違反了開閉設計原則。
工廠方法
- 為每個產品定義一個用於建立該產品的工廠,客戶端只需從指定產品工廠獲取產品。
- 每個產品都需要定義對應的工廠,增加了系統複雜度。
抽象工廠
- 抽象工廠在工廠方法的基礎上,對工廠進行了抽象,定義一個抽象工廠類,由子類負責產品的建立,符合依賴倒置原則。
- 當新增產品時需修改抽象工廠類,違反了開閉原則。
總結
- 簡單工廠實現簡單。
- 工廠方法為每個產品定義工廠類。
- 抽象工廠對工廠方法進行了改進,提倡介面程式設計。