《設計模式》教材前言
本教材(《設計模式》)已由清華大學出版社於2011年10月正式出版,以下是其前言部分:
魯迅先生曾說過: “其實地上本沒有路,走的人多了,也便成了路”。模式與之同理,它是人類在工程應用領域經驗的總結與傳承,是人類在具體環境下解決特定現實問題所積累和整理的解決方案。模式的概念來自於建築領域,模式之父Christopher Alexander博士將模式定義為“在具體環境中解決問題的方法”,它可以用於人類所從事的各個領域,這其中也包括軟體工程領域。
設計模式開創者之一、敏捷開發方法的創始人Erich Gamma曾說過: “設計和開發物件導向軟體是非常困難的,而設計和開發可複用的物件導向軟體則更加困難”。在軟體開發過程中,有經驗的設計者往往會重複使用他們在以前設計工作中的曾經用到的一些解決方案,這些解決方案可以提高設計者的開發效率與軟體質量,並使所設計的軟體更加靈活,易於擴充套件,可複用性也更高,設計模式為實現可維護性複用而誕生。
設計模式已經成功應用於很多軟體的設計中,設計模式、重構、UML已成為一個優秀的物件導向軟體開發人員所必須掌握的知識和技能,無論是物件導向程式設計的初學者還是有一定程式設計經驗的程式設計師,都可以從設計模式的學習和使用中深入理解物件導向思想的精華,開發出擴充套件性和複用性俱佳的軟體。本書編者在十餘年的軟體開發和多年的教育教學工作中積累了豐富的設計模式使用經驗和教學經驗,也深刻體會到學習設計模式的意義。目前,國內越來越多的高校在軟體工程研究生和本科生教學中開設了軟體體系結構、物件導向分析和設計等課程,而設計模式是這些課程的核心組成部分之一,還有的學校將設計模式作為一門單獨的課程開設,很多軟體培訓機構在軟體工程師培訓課程中也包含了設計模式相關內容。本書的目的在於讓廣大學生和學員更快、更好地理解和掌握每一個設計模式。
本書的原始教學講義誕生於2006年,經過中南大學軟體學院軟體工程專業高年級本科生、長沙創智新程教育技術有限公司軟體工程師培訓學員和湖南科創資訊科技股份有限公司等軟體企業內訓員工的多次使用,本書的內容在不斷充實和完善。將這些講義整理成為一本正式出版的教材一直是編者的一個願望,鑑於國內高校和軟體培訓機構對設計模式教材的迫切需求,編者決定將設計模式教學講義以教材形式出版。
本書在整理時還參考了目前市面上已有的設計模式書籍,集各家所長,並在此基礎上進行擴充套件與整理,適用於高校和培訓教學,將一些原本深奧並難以理解的設計思想通過一些簡單例項進行解析,讓讀者能夠輕鬆掌握物件導向設計思想的精髓。本書以“例項驅動教學”為整體編寫原則,每一個模式的學習均基於一或兩個例項,通過例項來加深對模式的理解,並結合例項學習如何在實際開發中運用所學模式。對於每一個模式,所學內容包括模式動機與定義、模式結構與分析、模式例項與解析、模式效果與應用和模式擴充套件,內容豐富,講解透徹,並提供了模式結構和例項的UML類圖和Java實現程式碼,所有類圖均嚴格按照UML 2.0標準繪製,所有程式碼均在JDK 1.6環境下通過測試且執行無誤。
本書一共有27章,可分為四個部分:
第一部分包含第1~3章,將學習物件導向設計的一些基本知識,包括UML基礎知識、物件導向設計原則和設計模式概述,作為後續設計模式學習的知識基礎。
第二部分包含第4~9章,將學習六種常用的建立型設計模式,包括簡單工廠模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式和單例模式。
第三部分包含第10~16章,將學習七種常用的結構型設計模式,包括介面卡模式、橋接模式、組合模式、裝飾模式、外觀模式、享元模式和代理模式。
第四部分包含第17~27章,將學習十一種常用的行為型設計模式,包括職責鏈模式、命令模式、直譯器模式、迭代器模式、中介者模式、備忘錄模式、觀察者模式、狀態模式、策略模式、模板方法模式和訪問者模式。
本書提供了完整的配套教學資料,包括例項原始碼和PPT格式的電子課件,在每一章後面均配有一定量的習題,讀者可以通過這些習題對所學知識進行鞏固,加深理解,並學會在專案中運用所學知識來解決實際問題。可通過清華大學出版社網站(http://www.tup.tsinghua. edu.cn)下載這些資料。本教材配套的教學視訊也在錄製過程中,不久之後將正式發行; 計劃出版一本與本書配套的設計模式實戰手冊,作為本書的題解和實驗輔導教材。這些教學資料將形成一個完整的體系,為教學和學習提供便利。
本書既可作為高等院校軟體工程專業研究生和本科生設計模式、軟體體系結構、物件導向分析與設計等相關課程的教材,也可以作為各軟體培訓機構軟體工程師培訓、軟體架構師培訓教材,還可以作為廣大軟體愛好者和軟體開發人員的自學和參考用書。
本書由中南大學軟體學院劉偉擔任主編,由中南大學軟體學院胡志剛教授、中南大學資訊科學與工程學院郭克華擔任副主編,劉偉負責本書主體內容的編寫,胡志剛負責本書的審校,郭克華負責本書部分模式例項的設計和編寫。中南大學軟體學院江林參與部分課後習題的命題工作,長沙創智新程教育技術有限公司陳昌主、周建軍等參與部分講義的整理工作,任波、夏緒武、趙璟、唐磊、雷鬆、譚華等參與教材勘誤工作。在此向所有幫助和支援過我們的朋友表示感謝。在編寫過程中參考和引用了國內外很多書籍和網站的相關內容,部分圖片的素材和個別例項的初始原型也來源於網路,由於涉及的網站和網頁太多,沒有一一列舉,在此一併予以感謝。最後特別感謝清華大學出版社為本書出版所作出的努力。
設計模式是無數人經驗的積累,希望通過這本書的學習,讀者能夠從一些生活例項中領悟這些模式的精髓,並能夠在合適的專案場景下使用它們。有了設計模式,我們的軟體將變得更像一個藝術品,而不是一堆難以維護和重用的程式碼。由於時間倉促、學識有限,書中不足和疏漏之處難免,懇請廣大讀者將意見和建議通過清華大學出版社反饋給我們,以便在後續版本中不斷改進和完善。
劉偉 2011年8月
本教材所有教學資料可以通過如下途徑下載:
清華大學出版社網站:http://www.tup.com.cn/book/Showbook.asp?CPBH=037987-01&DJ=45
架構師之家網站:http://www.chinasa.info
相關文章
- javascript設計模式1–前言JavaScript設計模式
- iOS 設計模式淺析 0 – 前言iOS設計模式
- iOS 設計模式淺析 0 - 前言iOS設計模式
- Java設計模式聖經連載之(00)-前言Java設計模式
- 前言-Java程式設計Java程式設計
- 高校教材管理系統設計
- CCUT程式設計能力測試---前言程式設計
- (讀書)實現模式 前言模式
- PHP 網路程式設計小白系列 —— 前言PHP程式設計
- 《Wrox:J2EE設計開發程式設計指南》的前言程式設計
- 設計模式----工廠設計模式設計模式
- 設計模式-工廠設計模式設計模式
- Java設計模式——模板設計模式Java設計模式
- 設計模式---外觀設計模式設計模式
- [設計模式]單例設計模式設計模式單例
- 設計模式-裝飾設計模式設計模式
- 設計模式之單例設計模式設計模式單例
- 設計模式(四)Singleton設計模式設計模式
- PHP設計模式—建立型設計模式PHP設計模式
- 【設計模式】設計模式的分類設計模式
- 【設計模式】設計模式(一)-- 大話設計模式讀書筆記設計模式筆記
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 《XNA高階程式設計:Xbox 360和Windows》前言程式設計Windows
- [TEAP早期試讀]《程式設計師的數學》- 前言程式設計師
- 設計模式----代理模式設計模式
- 設計模式----中介模式設計模式
- 設計模式——策略模式設計模式
- 設計模式(策略模式)設計模式
- 設計模式-中介模式設計模式
- 設計模式-模板模式設計模式
- 設計模式——模板模式設計模式
- 設計模式——代理模式設計模式
- 設計模式-代理模式設計模式
- 設計模式-策略模式設計模式
- 設計模式~代理模式設計模式
- 【設計模式】代理模式設計模式
- 設計模式--命令模式設計模式
- 設計模式----Observer模式設計模式Server