設計模式-01 六大設計原則

SRP

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

說明

職責:可以理解為變化的原因。

單一職責原則:就一個類而言,僅有一個引起它變化的原因

違反原則:如果一個類承擔的職責過多,職責必然存在耦合,一個職責的變化可能導致其他職責出現問題

舉例

1、數據庫類設計,針對數據庫連接和數據庫數據操作兩個職責,至少分成兩個類或者接口

2、實體類設計;針對實體類的業務計算與持久化兩個職責,至少分成

兩個類或者接口

OCP

OCP(open closed principle)原則,即開閉原則

說明

開閉原則:軟件可以擴展,但不能修改

特徵:對於擴展開放(open for extension),對於修改關閉(closed for modification)

注意點:避免過度設計,僅對頻繁變化的部分做抽象即可

舉例

1、Spring TransactionManager 採取模板設計模式:對數據庫事務的開啟,提交,回滾操作封閉,對數據庫數據的操作(頻繁變化的部分)增刪改查開放

LSP

LSP(liskov principle)原則,即liskov替換原則

liskov

liskov替換原則由liskov提出: 是位女性(很了不起),芭芭拉·利斯科夫(Barbara Liskov),本名Barbara Jane Huberman。美國計算機科學家,2008年圖靈獎得主,2004年約翰·馮諾依曼獎得主。現任麻省理工學院電子電氣與計算機科學系教授。

說明

liskov替換原則:子類型必須能夠替換掉他們的父類

解釋說明:存在類PARENT,所在的程序中,如果類CHILD替換掉類PARENT,程序行為功能不變,則CHILD是PARENT的子類。可以看出違反LSP原則,間接也違反了OCP原則(開閉原則)

違反LSP原則的可選解決方案:當類CHILD無法替代類PARENT時,可以考慮分析CHILD和PARENT的行為,嘗試抽象出類SUPERPARENT

DIP

DIP(dependency inversion principle)原則,即依賴倒置原則

說明

高層模塊不應該依賴於低層模塊,二者都應該依賴於抽象

抽象不應該依賴於細節,細節應該依賴於抽象

面向程序設計:策略依賴於細節,違背DIP原則

面向對象設計:真正的面向對象設計,倒置依賴關係,細節和抽象都依賴於接口

ISP

ISP(interface segregation principle)原則,即接口隔離原則

說明

ISP原則:不強迫客戶依賴它們不用的方法

如果類的接口不是內聚的,就表示違反了

接口隔離原則

違背ISP原則的解決方案

  1. 通過適配器,使用委託分離接口
  2. 接口分離,實現多個接口

注意

不能過度設計,一個類一個接口一個方法

LOD

LOD(Law of Demeter)原則,即最少知道原則(迪米特法則)

說明

一個軟件實體應當儘可能少的與其他實體發生相互作用

應該儘量減少對象之間的交互,如果兩個對象之間不必彼此直接通信,那麼這兩個對象就不應當發生任何直接的相互作用


分享到:


相關文章: