設(shè)計模式是面向?qū)ο缶幊痰臒衢T話題之一,也是近年來國內(nèi)外廣泛使用和研究的熱點。
本書是一本介紹軟件設(shè)計模式內(nèi)容及原理的教材,作者以設(shè)計模式的概念、原則、分類及構(gòu)成為出發(fā)點,詳細分析了24種設(shè)計模式。在介紹每種模式時,以一個軟件設(shè)計開發(fā)中的實際問題為引子,探討一般實現(xiàn)方法的缺陷,進而介紹新模式的結(jié)構(gòu),再以一個實際的例子展現(xiàn)模式的編程方法,*后對使用模式的效果進行分析,通過應(yīng)用實例展示設(shè)計模式在應(yīng)用系統(tǒng)開發(fā)實踐中的應(yīng)用。同時,本書緊跟業(yè)界技術(shù)發(fā)展,對*的軟件架構(gòu)建模技術(shù)進行了分析和介紹。
本書是為有一定編程基礎(chǔ)的讀者編寫的,內(nèi)容全面,概念清晰,例題豐富,循序漸進,易于學習,是大學計算機專業(yè)本科生、研究生學習設(shè)計模式的基礎(chǔ)教材,也可以作為從事軟件研究和軟件開發(fā)工作有關(guān)人員的參考書。
本書是為有一定編程基礎(chǔ)的讀者編寫的,主要介紹設(shè)計模式的知識和開發(fā)方法。作者參閱了國內(nèi)外多種設(shè)計模式的教材,認真分析了學習者在學習過程中遇到的困難,設(shè)計了讀者易于學習的教材體系,用大量應(yīng)用實例深入淺出地講解設(shè)計模式的使用方法和實際效果,使讀者易于理解、便于使用,大大減少了初學者學習設(shè)計模式的困難。
F O R E W O R D前言
面向?qū)ο蟪绦蛟O(shè)計已經(jīng)成為軟件設(shè)計開發(fā)領(lǐng)域的主流,而學習使用設(shè)計模式非常有助于軟件開發(fā)人員開發(fā)出易維護、易擴展、易復(fù)用的代碼。而且,目前越來越多的大學和培訓(xùn)機構(gòu)也把面向?qū)ο蠹夹g(shù)作為主要教學內(nèi)容。本書從面向?qū)ο蟮幕靖拍钊胧,介紹面向?qū)ο蟪绦蛟O(shè)計的主要原理和方法,重點探討了在程序設(shè)計中怎樣使用著名的24個設(shè)計模式。本書編者在十余年的項目開發(fā)實踐中積累了豐富的開發(fā)經(jīng)驗,在近年來的項目開發(fā)中,也有意識地大量使用設(shè)計模式來提高系統(tǒng)的可復(fù)用性。在對各類設(shè)計模式的使用中常常沉醉于設(shè)計模式精妙的構(gòu)思和優(yōu)雅的結(jié)構(gòu),于是產(chǎn)生了編寫一本用實例來透徹講解設(shè)計模式使用的參考書的想法,鑒于高等院校對設(shè)計模式相關(guān)教材的迫切需要,因此決定將本書以教材的形式撰寫。作者于2009年編寫了《實用軟件設(shè)計模式教程》,由清華大學出版社出版。該書出版后,受到了廣大讀者的歡迎,認為該書概念清晰,敘述詳盡,深入淺出,通俗易懂。根據(jù)發(fā)展的需要,作者于2016年編寫了《實用軟件設(shè)計模式教程(第2版)》,本書第2版相較第1版,對最新的軟件架構(gòu)技術(shù)進行了補充闡述,緊跟當前技術(shù)發(fā)展,同時改用業(yè)界使用較為廣泛的C#程序設(shè)計語言作為設(shè)計模式的描述語言,為讀者的工作和學習提供有益的幫助。本書嚴格執(zhí)行面向?qū)ο笤O(shè)計標準并使用實例講解每個設(shè)計模式,使讀者易于理解、便于使用,最后一章還用實際項目開發(fā)實踐中的實例作為例子,介紹各種設(shè)計模式在實際項目中綜合應(yīng)用的方法。本書的章節(jié)安排如下。第1章為面向?qū)ο蠡A(chǔ),詳細分析面向?qū)ο蠓椒,從面向(qū)ο蠓椒ǖ漠a(chǎn)生、面向?qū)ο蠓椒ǖ母拍钜隽嗣嫦驅(qū)ο蠓椒ǖ膬?yōu)勢,又結(jié)合一個具體的應(yīng)用系統(tǒng)實例,細致分析了面向?qū)ο蠓治、面向(qū)ο笤O(shè)計、面向?qū)ο缶幊虒崿F(xiàn)、面向?qū)ο蟮臏y試以及面向?qū)ο筌浖O(shè)計原則的主要步驟和方法。第2章為C#面向?qū)ο缶幊袒A(chǔ),介紹C#語言的相關(guān)概念和技術(shù),為后續(xù)的設(shè)計模式學習打下基礎(chǔ)。第3章為設(shè)計模式,按創(chuàng)建型、結(jié)構(gòu)型、行為型分類,詳細分析23種設(shè)計模式,在介紹每個模式時,以一個軟件設(shè)計開發(fā)中的實際問題為引子,探討一般實現(xiàn)方法的缺陷,進而介紹新模式的結(jié)構(gòu),再以一個實際的例子展現(xiàn)模式的編程方法,最后對使用模式的效果進行分析。第4章為綜合實例,該實例集中使用了多種設(shè)計模式,展示設(shè)計模式在應(yīng)用系統(tǒng)開發(fā)實踐中的應(yīng)用。第5章為軟件架構(gòu)與架構(gòu)建模技術(shù),介紹軟件架構(gòu)的定義和發(fā)展史,分析了幾種常用的軟件架構(gòu)模式,并簡要介紹軟件架構(gòu)建模技術(shù)。第6章為面向服務(wù)的軟件架構(gòu)SOA,簡要介紹SOA、SOA的框架及其應(yīng)用實例。第7章為云計算環(huán)境下的軟件架構(gòu),主要介紹在云計算環(huán)境下軟件架構(gòu)的技術(shù)和內(nèi)容。本書的編寫過程中,林春喜、楊剛、吳夏、武曉周、姚智海、王嬋、陳鵬、閆志浩等人完成了大量校正、錄入工作,在此對他們的工作表示感謝。在此謹對所有曾經(jīng)支持和幫助過我們的同志和朋友表示真摯的謝意。由于我們水平有限,再加上時間緊迫,書中難免有疏漏和不妥之處,盼望專家和廣大讀者不吝指正。
編者2016年12月
C O N T E N T S
目錄
第1章面向?qū)ο蠡A(chǔ)
1.1面向?qū)ο蠓椒?/p>
1.1.1面向?qū)ο蠓椒ǖ奶攸c
1.1.2面向?qū)ο蠓椒ǖ幕靖拍?/p>
1.1.3面向?qū)ο笳Z言的產(chǎn)生
1.1.4面向?qū)ο蟮膬?yōu)勢
1.2面向?qū)ο蠓治?/p>
1.2.1概論
1.2.2需求陳述
1.2.3建立對象模型
1.2.4建立動態(tài)模型
1.2.5建立功能模型
1.3面向?qū)ο笤O(shè)計
1.3.1面向?qū)ο笤O(shè)計的準則
1.3.2問題域部分設(shè)計
1.3.3人機交互部分設(shè)計
1.3.4數(shù)據(jù)管理部分設(shè)計
1.4面向?qū)ο缶幊虒崿F(xiàn)
1.4.1編程語言的選擇
1.4.2面向?qū)ο蟪绦蛟O(shè)計風格
1.5面向?qū)ο蟮臏y試
1.5.1面向?qū)ο鬁y試概述
1.5.2面向?qū)ο鬁y試策略
1.5.3設(shè)計測試用例
1.6面向?qū)ο筌浖O(shè)計原則
1.6.1開放封閉原則
1.6.2單一職責原則
1.6.3里氏代換原則
1.6.4依賴倒轉(zhuǎn)原則
1.6.5接口隔離原則
1.6.6迪米特法則
1.6.7其他原則
本章小結(jié)
習題
參考文獻
第2章C#面向?qū)ο缶幊袒A(chǔ)
2.1類
2.1.1類的字段
2.1.2類的屬性
2.1.3類的方法
2.1.4構(gòu)造函數(shù)和析構(gòu)函數(shù)
2.2繼承
2.3抽象類
2.4接口
2.5多態(tài)
2.5.1虛函數(shù)
2.5.2多態(tài)
本章小結(jié)
習題
參考文獻
第3章設(shè)計模式
3.1設(shè)計模式基礎(chǔ)
3.1.1設(shè)計模式概念
3.1.2設(shè)計模式的基本要素
3.1.3怎樣使用設(shè)計模式
3.1.4設(shè)計模式的類型
3.2創(chuàng)建型模式
3.2.1簡單工廠模式
3.2.2工廠方法模式
3.2.3抽象工廠模式
3.2.4建造者模式
3.2.5單件模式
3.2.6原型模式
3.3結(jié)構(gòu)型模式
3.3.1適配器模式
3.3.2裝飾模式
3.3.3橋接模式
3.3.4享元模式
3.3.5外觀模式
3.3.6代理模式
3.3.7組合模式
3.4行為型模式
3.4.1模板方法模式
3.4.2觀察者模式
3.4.3迭代器模式
3.4.4責任鏈模式
3.4.5備忘錄模式
3.4.6命令模式
3.4.7狀態(tài)模式
3.4.8訪問者模式
3.4.9中介者模式
3.4.10策略模式
3.4.11解釋器模式
本章小結(jié)
習題
參考文獻
第4章綜合實例武侯預(yù)伏錦囊計
4.1問題描述
4.2需求分析
4.3系統(tǒng)類結(jié)構(gòu)
4.4各主要操作的活動圖
4.5設(shè)計中采用的主要設(shè)計模式
4.6程序代碼
參考文獻
第5章軟件架構(gòu)與架構(gòu)建模技術(shù)
5.1軟件架構(gòu)概況
5.1.1軟件架構(gòu)的發(fā)展史
5.1.2軟件架構(gòu)的定義
5.2客戶機/服務(wù)器模式
5.2.1傳統(tǒng)兩層客戶機/服務(wù)器模式
5.2.2經(jīng)典三層客戶機/服務(wù)器模式
5.3瀏覽器/服務(wù)器模式
5.4MVC架構(gòu)模式
5.4.1MVC結(jié)構(gòu)
5.4.2MVC的特點
5.5基于構(gòu)件的模式
5.6軟件架構(gòu)建模技術(shù)
5.6.1軟件架構(gòu)4 1視圖模型
5.6.24 1視圖模型建模方法
5.6.3軟件架構(gòu)建模的迭代過程
本章小結(jié)
習題
參考文獻
第6章面向服務(wù)的軟件架構(gòu)SOA
6.1SOA簡介
6.1.1SOA參考模型
6.1.2SOA的設(shè)計原則
6.1.3SOA實現(xiàn)的主要技術(shù)規(guī)范
6.2SOA的框架
6.2.1以服務(wù)消費者為中心的SOA
6.2.2以用戶為中心的SOA
6.3SOA實例基于SOA的OA與ERP整合應(yīng)用
6.4SOA的應(yīng)用分析
本章小結(jié)
習題
參考文獻
第7章云計算環(huán)境下的軟件架構(gòu)
7.1軟件三層架構(gòu)模型
7.1.1三層軟件架構(gòu)產(chǎn)生的原因
7.1.2三層軟件架構(gòu)介紹
7.1.3三層架構(gòu)存在的問題
7.2基于云計算的軟件架構(gòu)
本章小結(jié)
習題
參考文獻