什麼是設計模式?
設計模式並不局限於某種特定的程式語言,它是一套基於前人經驗總結出的軟體設計指導原則,所以很多初學者覺得設計模式晦澀難懂,無從下手。本書秉承簡約與現實的風格,幫助讀者理解設計模式的概念。
輕鬆、幽默,閱讀無負擔
本書以輕鬆、幽默、淺顯易懂的方式,從物件導向程式設計、物件導向三大特性的理論基礎做開場,然詳細地講解了23種設計模式的概念及結構機理,最後以六大設計原則收尾,全面地解析歸納了軟體設計準則,參透設計模式的本質。
貼近生活,淺顯易懂
每章都有貼近生活的真實範例,搭配生動活潑的插圖,再結合相關範例程式實戰演練,循序漸進、深入淺出,引導讀者領略設計模式的精髓。
<序>
相信軟體開發工作者都聽過一句名言:「不要重複造輪子」。從某種意義上講,程式中如果出現大量重複的程式碼,則意味著這是一個缺乏設計的軟體。物件導向程式語言的初學者寫程式碼時,往往有想到哪裡寫到哪裡的毛病,缺乏軟體架構的大局觀,最終造成系統中充斥大量的冗餘程式碼,缺乏模組化的設計,更談不上程式碼的重用。程式碼量大並不能代表系統功能多麼完備,更不能代表程式設計師多麼努力與優秀,反之,作為有思想高度的開發者一定要培養「偷懶」意識,竭盡心力以最少的程式碼量實現最強的功能,這樣才是優秀的設計。
設計模式主要研究的是「變」與「不變」,以及如何將它們分離、解耦、組裝,將其中「不變」的部分沉澱下來,避免「重複造輪子」,而對於「變」的部分則可以用抽象化、多型化等方式,增強軟體的相容性、可擴充性。如果將編寫程式碼比喻成建築施工,那麼設計模式就像是建築設計。這就像樂高積木的設計理念一樣,圓形點陣式的介面具有極強的相容性,能夠讓任意元件自由拼裝、組合,形成一個全新的物件。
有一定專案經驗的開發人員都會有這樣的體會,隨著需求的增加與變動,軟體版本不斷升級,維護也變得越來越難,修改或增加一個很簡單的功能往往要耗費大量的時間與精力,牽一髮而動全身,嚴重時甚至會造成整個系統的崩潰。優秀的系統不單單在於其功能有多麼強大,更應該將各個模組劃分清楚,並且擁有一套完備的框架,像開放式平台一樣相容對各種外掛程式的擴展,讓功能變動或新增變得異常簡單,一勞永逸,這離不開對各種設計模式的合理運用。
設計模式並不局限於某種特定的程式語言,它是從更加宏觀的思想高度上展開的一種大局觀,是一套基於前人經驗總結出的軟體設計指導原則,所以很多初學者覺得設計模式晦澀難懂,無從下手。本書秉承簡約與現實的風格,幫助讀者將各種概念與理論化繁為簡,以通俗易懂、更貼近生活的實例與原始碼詳細解析每種模式的結構與機理。此外,文中配有大量生動具體的漫畫與圖表,幽默輕鬆的風格使原本刻板的知識鮮活起來,讓讀者能夠輕鬆愉快地學習與理解設計模式。