天天看點

面向對象設計原則與常用設計模式

一.依賴倒置原則(DIP):

  • 高層子產品(穩定)不應該依賴于低層子產品(變化),二者都應該依賴于抽象(穩定)。
  • 抽象(穩定)不應該依賴于實作細節(變化),實作細節應該依賴于抽象(穩定)。

二.開放封閉原則(OCP)

  • 對擴充開放,對更改封閉
  • 類模闆應該是可擴充的,但是不可修改,不然會給複用性帶來很大的負擔

三.單一職責原則(SRP)

  • 一個類應該僅有一個引起它變化的原因
  • 變化的方向隐含着類的責任

四.Liskov替換原則(LSP)

  • 子類必須能夠替換他們的基類(IS-A)
  • 繼承表達類型抽象

五.接口隔離原則(ISP)

  • 不應該強迫客戶依賴他們不用的方法
  • 接口應該小而完備

六.優先使用對象組合,而不是類繼承

  • 類繼承通常為“白箱複用”,對象組合通常為“黑箱複用”
  • 繼承在某種程度上破壞了封裝性,子類父類耦合度高
  • 而對象組合隻要求被組合的對象具有良好定義的接口,耦合度低

七.封裝變化點

  • 使用封裝來建立對象之間的分界層,讓設計者可以在分界層一側進行修改,而不會對另一側産生不良影響,進而實作層次間的松耦合

八.針對接口程式設計,而不是針對實作程式設計

  • 不将變量類型聲明為某個特定的具體類,而是聲明為某個接口
  • 客戶程式無需擷取對象的具體類型,隻需要知道對象所具有具有的接口
  • 減少系統中各部分的依賴關系,進而實作“高内聚,松耦合”的類型設計方案

觀察者模式:

面向對象設計原則與常用設計模式

裝飾模式:

面向對象設計原則與常用設計模式

橋模式:

繼續閱讀