設計模式(Design Pattern)是前輩們對代碼開發經驗的總結,是解決特定問題的一系列套路。它不是語法規定,而是一套用來提高代碼可復用性、可維護性、可讀性、穩健性以及安全性的解決方案。
1995 年,GoF(Gang of Four,四人組/四人幫)合作出版了《設計模式:可復用面向對象軟件的基礎》一書,共收錄了 23 種設計模式,從此樹立了軟件設計模式領域的里程碑,人稱「GoF設計模式」。
這 23 種設計模式的本質是面向對象設計原則的實際運用,是對類的封裝性、繼承性和多態性,以及類的關聯關系和組合關系的充分理解。
當然,軟件設計模式只是一個引導,在實際的軟件開發中,必須根據具體的需求來選擇:
? 對于簡單的程序,可能寫一個簡單的算法要比引入某種設計模式更加容易;
? 但是對于大型項目開發或者框架設計,用設計模式來組織代碼顯然更好。
本教程雖然命名為“Java設計模式”,但是設計模式并不是 Java 的專利,它同樣適用于 C++、C#、JavaScript 等其它面向對象的編程語言。
Java 是典型的面向對象的編程語言,所以本教程以 Java 為基礎來講解這 23 種設計模式,如果你不了解 Java,請猛擊《Java教程》學習。
手冊簡介
設計模式(Design pattern)是一套被反復使用、多數人知曉的、經過分類編目的、代碼設計經驗的總結。使用設計模式是為了可重用代碼、讓代碼更容易被他人理解、保證代碼可靠性。 毫無疑問,設計模式于己于他人于系統都是多贏的;設計模式使代碼編制真正工程化;設計模式是軟件工程的基石脈絡,如同大廈的結構一樣。
無論您是新手,還是老手,本教程都值得一讀。對于那些具有豐富的開發經驗的開發人員,學習設計模式有助于了解在軟件開發過程中所面臨的問題的最佳解決方案;對于那些經驗不足的開發人員,學習設計模式有助于通過一種簡單快捷的方式來學習軟件設計
設計模式在軟件開發中有兩個主要用途。
設計模式提供了標準術語,并且特定于應用折場景。 例如,單例設計模式表示使用單個對象,所以熟悉單一設計模式的所有開發人員都將使用單個對象,并且他們可以告訴對方程序正在遵循單例模式。
設計模式已經經過一段很長的時間發展,它們為軟件開發過程中面臨的某些問題提供了最佳解決方案。 學習這些模式有助于無經驗的開發人員以一種簡單快捷的方式學習軟件設計。
根據設計模式參考《設計模式 - 可重用的面向對象軟件元素》一書中所述,一共有23種設計模式可以分為三類:創造模式,結構模式和行為模式。在這里我們還將討論另一類設計模式:J2EE設計模式。
編號 |
模式與說明 |
---|---|
1 |
創造模式:這些設計模式提供了一種創建對象而隱藏創建邏輯的方法,而不是直接使用 new 操作符來實例化對象。 這使程序在決定對于給定的用例需要創建哪些對象時具有更大的靈活性。 |
2 | 結構模式:這些設計模式涉及類和對象組成。 繼承概念用于組成接口并定義方法組合對象以獲得新功能。 |
3 | 行為模式:這些設計模式是特別側重于對象之間的通信。 |
4 | J2EE模式:這些設計模式特別涉及表示層。 這些模式由Sun Java Center標識。 |
另外,設計模式是與編程語言無關的,它是用于解決常見的面向對象的設計問題。
設計模式代表一個想法,而不是一個實現。
通過使用設計模式,可以使我們的代碼更靈活,可重用和可維護。
Java本身內部遵循設計模式。
在核心java中,主要有三種類型的設計模式,它們可進一步分為以下子部分:
① 工廠模式
② 抽象工廠模
③ 式單例模式
④ 原型模式
⑤ Builder模式
① 適配器(Adapter)模式
② 橋接(Bridge)模式
③ 組合模式
④ 裝飾者(Decorator)模式
⑤ 外觀(Facade)模式
⑥ 享元(Flyweight)模式
⑦ 代理(Proxy)模式
① 責任鏈模式
② 命令模式
③ 解釋器模式
④ 迭代器模式
⑤ 調解者(Mediator)模式
⑥ 備忘錄模式
⑦ 觀察者模式
⑧ 狀態模式
⑨ 策略模式
⑩ 模板模式
? 訪問者模式