1. 程式人生 > 其它 >一、設計模式簡介

一、設計模式簡介

1.什麼是設計模式

  每一個模式描述了一個在我們周圍不斷重複發生的問題,以及該問題的解決方案的核心,這樣我們就能一次一次地使用該方案而不用重複勞動。設計的金科玉律是複用性

2. 面向物件能夠隔離變化

  從巨集觀層面看,面向物件的構建方式更能適應軟體的變化,將變化所帶來的的影響減為最小。

3.面向物件能夠使各個類各司其職

  從微觀層面來看,面向物件的方式更強調各個類的責任,由於需求變化導致的新要求不應該影響原來型別的實現。

4.物件是什麼:

  語言層面是封裝了程式碼和資料,規格層面是一系列可被使用的公共介面,概念層面是擁有某種責任的抽象。

5.面向物件的設計原則

  a.依賴倒置原則(DIP):高層模組(穩定)不應該依賴於低層模組(變化),二者都應該依賴於抽象(穩定)。抽象(穩定)不應該依賴於實現細節(變化),實現細節應該依賴於抽象(穩定)。圖解:通過這種原則,可以隔離變化,即低層不會影響高層。

 

  b.開放封閉原則(OCP):對擴充套件開放,對更改封閉。類模組應該是可以擴充套件的,但是不可修改

  c.單一職責原則(SRP):一個類應該僅有一個引起它變化的原因。變化的方向隱含著類的責任。

  d.Liskov替換原則(LSP):子類必須能夠替換它們的基類。繼承表達型別抽象。

  e.介面隔離原則(ISP):不應該強迫客戶程式依賴它們不用的方法,介面應該小而完備

  f.優先使用物件組合,而不是類繼承:類繼承通常稱為“白箱複用”,物件組合通常為“黑箱複用”。繼承某種程度上破壞了封裝性,子類父類耦合度高,而物件組合則只要求被組合的物件具有良好定義的介面,耦合度低。

  g.封裝變化點:使用封裝來建立物件的分界層,讓設計者可以在一側進行修改,而不會對另一側產生不良的影響,從而實現鬆耦合。

  h.針對介面程式設計,而不是針對實現程式設計:不將變數宣告為某個特定的具體類而是宣告為某個介面,客戶程式無需獲知物件的具體型別,只需要知道物件所具有的介面。減少系統中各部分的依賴關係,實現“高內聚、鬆耦合”的型別設計方案。