設計模式 之 六大設計原則

設計原則

單一職責原則(SRP,single responsibility principle)

定義:一個類,應該只有一個引起它變化的原因:即一個類應該只有一個職責。

優點:
	1. 降低類的複雜性
	2. 提高類的可讀性
	3. 提高代碼的可維護性和複用性
	4. 降低因變更引起的風險

里氏替換原則(Liskov Substitution Principle)

定義:子類可以替換父類的位置,並且不影響程序

優勢:里氏替換原則爲繼承定義了規範:
	1. 子類必須完全實現父類的方法
	2. 子類可以有自己的定製邏輯
	3. 覆蓋或實現父類的方法時入參可以被放大;
	4. 覆蓋或實現父類的方法時輸出結果可以被縮小;
	
在設計模式中體現里氏替換原則的幾個模式:
	1. 策略模式
	2. 組合模式
	3. 代理模式

依賴倒置原則(Dependence Inversion Principle,簡稱DIP)

定義:高層模塊不應該依賴底層模塊,兩者都依賴其抽象;抽象不依賴細節,細節應該依賴抽象;

接口隔離原則(Interface Segregation Principle,簡稱ISP)

定義:客戶端不應該依賴它不需要的接口;一個類對另一個類的依賴應該建立在最小的接口上

例子:比如快遞系統,
在門戶網站上只可以查到快遞訂單信息;
第三方商城可以創建、查詢、刪除快遞訂單信息;
管理後臺可以批量增刪改查快遞訂單;
那麼門戶網站、第三方商城、管理後臺依賴的接口應該設計成不一樣的。
這時需要設計三個Interface,如下:

接口隔離原則
代碼設計及實現如下:
在這裏插入圖片描述

迪米特原則(Law of Demeter 簡稱LoD)

定義:一個對象應當對其他對象儘可能少的瞭解。不要跟陌生人說話。
舉例:
User、Order、Product這三個對象,關係:User只與Order相關、Order與Product相關、User與Product無關。
這時User如果想知道某個Order總價格時,應該調用訂單的getPrice()方法,
而不是在User對象中獲取Order的所有Product的價格相加;(用戶不需要直接操作商品相關的信息)

開閉原則(open-Closed Principle 簡稱OCP)

定義:軟件應該對擴展開放,對修改關閉。

作用:
	1. 提高複用性:代碼邏輯粒度越細,被複用的可能性越大
	2. 提高可維護性:代碼粒度小,邏輯容易被理解
	3. 提高靈活性:添加新功能時不會影響到舊的邏輯
	4. 易於測試:代碼粒度小,單元測試覆蓋更全面
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章