設計模式

設計模式 (即,使代碼編寫真正工程化)
設計模式(Design Pattern)是一套被反覆使用、多數人知曉的、經過分類的、代碼設計經驗的總結。
使用設計模式的目的:爲了代碼可重用性、讓代碼更容易被他人理解、保證代碼可靠性。
設計模式使代碼編寫真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。

最早將模式的思想引入軟件工程方法學的是1991-1992年以“四人組(Gang of Four,簡稱GoF,分別是Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides)”自稱的4位著名軟件工程學者,他們在1994年歸納發表了23種在軟件開發中使用頻率較高的設計模式。

劉偉——設計模式的藝術(軟件開發人員內功修煉之道)書中提到:軟件模式是指在軟件開發過程中某些可重現問題的有效解決方法,其基礎結果主要由4部分構成,包括:問題描述(待解決的問題是什麼)、前提條件(在何種環境或約束條件下使用)、解法(如何解決)和效果(由哪些優缺點)。

軟件模式基本結構:
這裏寫圖片描述

GoF設計模式共23種,分爲三種類型:
1、創建型模式(5種):單例模式工廠方法模式抽象工廠模式原型模式建造者模式
PS:簡單工廠模式並不屬於GoF23種設計模式,但是一般在介紹設計模式時,都會對其進行說明。
2、結構型模式(7種):適配器模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式、代理模式。
3、行爲型模式(11種):策略模式模版方法模式命令模式迭代器模式觀察者模式職責鏈模式(責任鏈模式)備忘錄模式狀態模式訪問者模式中介者模式解釋器模式(Interpreter模式)

7種常用的面向對象設計原則,是用於評價一個設計模式的使用效果的重要指標之一:
1、單一職責原則(Single Responsibility Principle, SRP):一個類只負責一個功能領域中的相應職責。或者可以定義爲:就一個類而言,應該只有一個引起它變化的原因。
2、開閉原則(Open-Closed Principle, OCP):一個軟件實體應當對擴展開放,對修改關閉。即軟件實體應儘量在不修改原有代碼的情況下進行擴展。
3、里氏代換原則(Liskov Substitution Principle, LSP):所有引用基類(父類)的地方必須能透明地使用其子類的對象。
4、依賴倒轉原則(Dependence Inversion Principle, DIP):抽象不應該依賴於細節,細節應該依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。
5、接口隔離原則(Interface Segregation Principle, ISP):使用多個專門的接口,而不是使用單一的總接口,即客戶端不應該依賴哪些它不需要的接口。
6、合成複用原則(Composite Resuse Principle, CRP):儘量使用對象組合,而不是繼承來達到複用的目的。
7、迪米特法則(Law of Demeter, LoD):一個軟件實體應當儘可能少地與其他實體發生相互作用。

發佈了28 篇原創文章 · 獲贊 12 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章