設計模式(design pattern)是一套被反複使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人了解、保證代碼可靠性。
軟體領域的設計模式起源于建築學。
1977年,建築大師alexander出版了《a pattern language:towns, building,
construction》一書。受alexander著作的影響 ,kent beck和ward
cunningham在1987年舉行的一次面向對象的會議上發表了論文:《在面向對象程式設計中使用模式》。

1.建立型模式
社會化的分工越來越細,自然在軟體設計方面也是如此,是以對象的建立和對象的使
用分開也就成為了必然趨勢。對象的建立會消耗掉系統的很多資源,是以單獨對對象的建立進行研究,進而能夠高效地建立對象就是建立型模式要探讨的問題。這裡
有5個具體的建立型模式可供研究,它們分别是:
工廠方法模式(factory method)
抽象工廠模式(abstract factory)
建立者模式(builder)
原型模式(prototype)
單例模式(singleton)
2.結構型模式
在解決了對象的建立問題之後,對象的組成以及對象之間的依賴關系就成了開發人員關注的焦點,如何設計對象的結構、繼承和依賴關系會影響到後續程式的
維護性、代碼的健壯性、耦合性等。對象結構的設計很容易展現出設計人員水準的高低,這裡有7個具體的結構型模式可供研究,它們分别是:
外觀模式(facade)
擴充卡模式(adapter)
代理模式(proxy)
裝飾模式(decorator)
橋模式(bridge)
組合模式(composite)
享元模式(flyweight)
3.行為型模式
在對象的結構和對象的建立問題都解決了之後,就剩下對象的行為問題了,如果對象的行為設計的好,那麼對象的行為就會更清晰,它們之間的協作效率就會提高,這裡有11個具體的行為型模式可供研究,它們分别是:
模闆方法模式(template method)
觀察者模式(observer)
狀态模式(state)
政策模式(strategy)
職責鍊模式(chain of responsibility)
指令模式(command)
通路者模式(visitor)
調停者模式(mediator)
備忘錄模式(memento)
疊代器模式(iterator)
解釋器模式(interpreter)
目前,被公認在設計模式領域最具影響力的著作是erich gamma、richard helm、ralph johnson和john
vlissides在1994年合作出版的著作:《design patterns:elements of reusable
object-oriented software》(中譯本《設計模式:可複用的面向對象軟體的基本原理》
或《設計模式》),該書被廣大喜愛者昵稱為gof(gang of
four)之書,被認為是學習設計模式的必讀著作,gof之書已經被公認為是設計模式領域的奠基之作。
1.面向抽象原則
設計一個類時,不讓該類面向具體的類,而是面向抽象類或接口 。
舉個例子:定義底面為三角形的柱體
2.開-閉原則
設計應當對擴充開放,對修改關閉。
如果您的設計遵守了“開-閉原則”,那麼這個設計一定是易維護的,因為在設計中增加新的子產品時,不必去修改設計中的核心子產品。
3.高内聚-低耦合原則
如果類中的方法是一組相關的行為,則稱該類是高内聚的,反之稱為低内聚的。
所謂低耦合就是盡量不要讓一個類含有太多的其它類的執行個體的引用,以避免修改系統的其中一部分會影響到其它部分。
學習設計模式不僅可以使我們使用好這些成功的模式,更重要的是可以使我們更加深刻地了解面向對象的設計思想,非常有利于我們更好地使用面向對象語言解決設計中的問題。
合理使用模式
1.正确使用; 2.避免教條; 3.模式挖掘