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