天天看點

【設計模式】面向對象六大原則

【設計模式】面向對象六大原則

設計模式

設計模式(Design pattern)是一套被反複使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人了解、保證代碼可靠性。設計模式于己于他人于系統都是多赢的,設計模式使代碼編制真正工程化。設計模式分為三種類型,分别是:建立型模式、結構型模式,行為型模式。

23種設計模式

  • 建立型模式,共5種: 單例模式 工廠模式 抽象工廠模式 、建造者模式、原型模式。
  • 結構型模式,共7種:擴充卡模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
  • 行為型模式,共11種:政策模式、模闆方法模式、觀察者模式、疊代子模式、責任鍊模式、指令模式、備忘錄模式、狀态模式、通路者模式、中介者模式、解釋器模式。

六大原則

1,單一職責原則(Single Responsibility Principle, SRP)

定義:一個類應隻包含單一的職責。

  • 如果一個類職責過多,代碼量就多,而使用起來顯得過分備援,不利于複用。
  • 如果修改某個職責,可能影響另一個職責。

2,開放封閉原則(Open - ClosedPrinciple ,OCP)

定義:一個子產品、類、函數應當是對修改關閉,對擴充開放。

  • 修改原有的代碼可能會導緻原本正常的功能出現問題。
  • 當需求改變時,最好通過擴充來實作,增加新的方法或類滿足需求,而不是去修改原有代碼。

3,裡氏代換原則( Liskov Substitution Principle ,LSP )

定義:使用父類的地方能夠使用子類來替換,反過來,則不行。

  • 使用子類對象去替換父類對象,程式将不會産生錯誤。
  • 程式中盡量使用基類類型來對對象進行定義,如父類的子類引用,而在運作時再确定其子類類型,用子類對象來替換父類對象。

4,依賴倒轉原則( Dependence Inversion Principle ,DIP )

定義:抽象不應該依賴于細節,細節應當依賴于抽象。

  • 即要面向接口程式設計,而不是面向具體實作去程式設計。
  • 高層子產品不應該依賴低層子產品,應該去依賴抽象。
  • 方法定義時,傳入對象用抽象類型,實際使用時傳入子類對象。

5,接口隔離法則(Interface Segregation Principle,ISL)

定義:一個類對另一個類的依賴應該建立在最小的接口上。

  • 一個類不應該依賴他不需要的接口,接口的方法全要用得到。
  • 接口粒度要盡可能小,盡量不能再分割。一個接口的方法過多,可以拆成多個接口。

6,迪米特法則(Law of Demeter, LoD)

定義:一個類盡量不要與其他類發生關系

  • 一個類對其他類知道的越少越好,耦合越小。導入的東西越少越好。
  • 當修改一個類時,其他類的影響就越小,發生錯誤的可能性就越小。

附件

設計模式Demo

GitHub源碼:

https://github.com/wzmyyj/Design-Pattern

繼續閱讀