軟件設計精要與模式

出版時間:2010-4  出版社:電子工業(yè)出版社  作者:張逸  頁數(shù):450  
Tag標簽:無  

前言

我希望告別冗長的前言,僅述說第2版的變更。寫作第2版的我,瘋狂地吸收了諸多大師的設計思想,這一點可以從參考文獻的前后差別看到端倪。這兩年以來,我又參與了幾個項目的設計與開發(fā)工作,所謂“實踐出真知”,在佐證大師觀點的同時,自己對設計的認識更進了一步。或許,第2版不會比第1版優(yōu)秀太多,但至少會減少諸多不足。囿于版本,我無法做出新的突破。我期待能創(chuàng)作一本全新的書,全面論述我對軟件設計的認識?,F(xiàn)在的我,還不足以寫出夢想中的軟件設計之道。言歸正傳。整體而言,我對第1版的所有章節(jié)都進行了一定程度的修訂?;蛘吒诉^去的錯誤,或者進一步完善了原有內容。本書的內容仍然是散漫而自由的,然而形散而神不散,大體遵循了設計的基本原則。在第1篇“設計之要”中,我新增了“對象法則”一章,言簡意賅地介紹了面向對象思想的核心要素與設計原則。這基于我的一貫理念,即設計模式的核心本質是面向對象設計思想的運用。只有掌握了面向對象設計思想,才能真正體會設計模式的精髓,并將其運用在實際的項目開發(fā)過程中?!皩ο蠓▌t”一章可以有機地與“封裝變化”一章結合起來,再加上第23章“軟件體系架構”的內容,基本上勾勒出軟件設計的脈絡,從面向對象思想到設計模式,再到軟件體系架構。在“封裝變化”一章中,我不僅完善了項目實例,還增加了關于如何“解耦具體依賴”的幾種技巧。對于軟件設計而言,這是非常有益的指導。我整個兒刪去了第1版的第5章“設計,由你掌握”,并將其中的部分內容轉移到“封裝變化”一章中。這使得第1篇的內容更為緊湊,雖然刪去了討論極限編程的相關內容,卻可以使得我們能夠更加關注于設計,而不是方法學。第2篇“.NET框架與設計模式”增加了對.NET3.X的源代碼分析。我無法做到與時俱進,因為.NET4.0即將走進.NET開發(fā)人員的程序生活?;蛟S在本書出版之后的不久,還會有5.0,6.0……我只是希望我的書不要被時代拋棄得太遠。好在設計模式本身屬于經(jīng)典,而經(jīng)典總是能夠經(jīng)得起時間考驗的。本書講述經(jīng)典,自然能討得一定好處。更新最明顯的是迭代器模式在.NET中的實現(xiàn)。C#2.0引入的yieldreturn以及.NET3.0引入的Lambda表達式都為迭代器模式在.NET中成為一種慣用法貢獻了一份心力。我對此的分析,可以在一定程度上幫助讀者更好地理解迭代器模式。在第2篇中,我新增了一章“.NET中的命令模式”,通過解析.NET3.0引入的WF(WindowsWorkflowFoundation),展現(xiàn)命令模式的非凡價值。第2篇的內容雖然與.NET平臺息息相關,但對于其他平臺的開發(fā)人員而言,仍有可觀之處。我在撰寫本書第2版時,同樣參考了Java平臺的設計理念,以及Ruby中的設計模式。

內容概要

  《軟件設計精要與模式(第2版)》關注的焦點是軟件設計,涵蓋了大部分與設計有關的基本要素,包括面向對象思想、設計模式、重構、測試驅動開發(fā)、極限編程以及軟件體系架構。其中,尤以設計模式為主,深入探討了軟件設計過程中的原則與模式,并結合大量的實例與代碼演示了如何合理運用設計模式,改善程序模塊的可復用性、可擴展性,實現(xiàn)模塊間的松散耦合。全書將軟件設計理論與項目實踐完美地結合起來,使其告別了純理論研究的空泛,具有現(xiàn)實的指導意義?!  盾浖O計精要與模式(第2版)》適用于所有希望提高軟件設計水平的程序員、軟件工程師,同時,對于軟件設計師與系統(tǒng)架構師也具有一定的參考價值。

作者簡介

張逸,軟件架構師,敏捷教練,微軟最有價值專家,InfoQ.NET豐土區(qū)常務編輯,msup資深講師。目前擔任中軟國際ETC(重慶)技術總監(jiān)。主要專注于軟件架構、設計模式、領域驅動設計和敏捷開發(fā),以及基于.NET平臺的企業(yè)級系統(tǒng)應用開發(fā)和分布式開發(fā)。曾先后為可口可樂、摩托羅拉、HP、京東方、尼桑、摩洛哥電信、盛大、第九城市、CA、攜程等企業(yè)提供設計、開發(fā)、咨詢與培訓服務。他的著譯作包括《軟件設計精要與模式》、《WCF服務編程》。

書籍目錄

第1篇 設計之要第1章 設計之道1.1 計劃的設計與演進的設計1.2 架構的標準1.3 過度設計,還是簡單設計1.4 需要設計模式嗎1.5 重構是必然的1.6 UML重要嗎1.7 測試驅動開發(fā)第2章 對象法則2.1 面向對象思想2.2 面向對象核心要素2.2.1 封裝2.2.2 繼承2.2.3 多態(tài)2.3 面向對象設計原則2.3.1 單一職責原則2.3.2 開放封閉原則2.3.3 Liskov替換原則2.3.4 依賴倒置原則2.3.5 接口隔離原則第3章 封裝變化3.1 設計模式之鵠的3.2 如何封裝變化3.2.1 封裝對象行為的變化3.2.2 封裝對象創(chuàng)建的變化3.2.3 封裝對象結構的變化3.3 解耦具體依賴3.3.1 配置文件與反射技術3.3.2 表驅動法3.3.3 慣例優(yōu)于配置3.3.4 依賴注入第4章 體驗重構4.1 一個階乘容器4.2 代碼的壞味道4.3 需求發(fā)生變化4.4 運用重構利器4.5 引入設計模式第5章 測試驅動開發(fā)5.1 發(fā)現(xiàn)價值與生產價值5.2 運用面向對象編程思想5.3 適時小結5.4 收獲價值5.5 無上之力第2篇 NET框架與設計模式第6章 NET中的工廠方法模式6.1 “嫁禍江東”之計6.2 WebRequest對象的創(chuàng)建6.3 改造工廠方法模式6.4 實現(xiàn)良好的可擴展性6.5 慣例優(yōu)于配置第7章. NET中的合成模式7.1 字處理軟件7.2 NET框架中的控件7.3 “復合方式”的合成模式第8章 .NET中的裝飾器模式8.1 一步一步走向裝飾器模式8.2 NET框架中對流的處理第9章 NET中的迭代器模式9.1 分辨對象的職責9.2 實現(xiàn)迭代器模式9.3 迭代器模式大觀園9.4 迭代器模式在.NET框架中的實現(xiàn)9.5 通過yieldreturn實現(xiàn)迭代器9.6 C#3.0對迭代器模式的支持第10章 NET中的策略模式10.1 稅務系統(tǒng)10.2 利用委托實現(xiàn)策略模式10.3 NET框架中的Provider對象第11章 NET中的命令模式11.1 考勤管理系統(tǒng)11.2 命令模式在WF中的運用11.3 合成模式與命令模式的結合第3篇 媒體播放器的設計之旅第12章 面向對象與接口分離12.1 拙劣的設計12.2 面向對象設計12.3 接口分離12.4 解除具體依賴第13章 接口行為的適配13.1 新的應用場景13.2 “狼”與“羊”的關系13.3 引入適配器模式13.3.1 類的適配器模式13.3.2 對象的適配器模式13.4 適配器模式比較第14章 接口行為的擴展14.1 設計走向死胡同14.2 考察適配器模式14.3 引入訪問者模式14.4 非循環(huán)訪問者模式14.5 合理運用訪問者模式第15章 接口行為的裝飾15.1 不斷變化的需求15.2 考慮代理模式15.3 引入裝飾器模式第4篇 設計模式應用實踐第16章 抽象工廠模式應用16.1 報表組件16.2 糟糕的設計16.3 引入抽象工廠模式16.4 工廠對象的使用……第17章 建造者模式應用第18章 命令模式應用第19章 職責鏈模式應用第20章 觀察者模式應用第21章 代理模式應用第22章 設計模式綜合應用第5篇 NET體系架構第23章 軟件體系架構第24章 數(shù)據(jù)訪問層第25章 消息處理第26章 ASP.NET緩存第27章 業(yè)務邏輯層第28章 變現(xiàn)層參考文獻

章節(jié)摘錄

插圖:第1篇 設計之要第1章 設計之道1.4 需要設計模式嗎如果僅考慮實現(xiàn)當前的功能需求,還需要設計模式嗎?坦白地說,我并不認為設計模式與過度設計有關。過度設計的導火索是設計模式的濫用。很多時候,合理地利用設計模式反而能使程序結構簡單化,特別是,它能夠讓開發(fā)過程更簡單。Christopher Alexander在描述城市和建筑模式時說,“每一個模式描述了一個在我們周圍不斷重復發(fā)生的問題,以及該問題的解決方案的核心。這樣,你就能一次又一次地使用該方案而不必做重復勞動。”設計模式正是為解決軟件開發(fā)領域中的類似問題,從而提出的解決方案,它作為面向對象編程經(jīng)驗的總結,是軟件設計技巧中最重要的方法與原則。放棄設計模式,意味著希望成為優(yōu)秀設計師的你,在將歷史的車輪向前倒?jié)L了十年之后,有幸成為了和GOF同行的偉大先驅者。你放棄了站在前人肩膀上眺望遠方的機會,而選擇自己艱難吃力地踮起腳尖,最后失去的卻是更遠處美麗的風景。需要設計模式嗎?答案看來是不言而喻。關鍵一點是需要確定模式的應用是否過度?世界上很多天才橫溢的程序員,可以在一段代碼中包含6種設計模式,也可以不利用模式就能把設計做得很好。然而,軟件設計的目標并不是炫耀茴香豆的“茴”字有幾種寫法,我們需要的是有效的設計。學習設計模式,不是為了炫耀、吹噓,不是為了故作艱深,而是為了改善我們的設計,它可以為某種功能實現(xiàn)提供參考模型、設計方法以及應用范例。我們不需要奉GOF的設計模式為圭臬,盲目地膜拜它,合理地運用設計模式,才是明智的抉擇。

媒體關注與評論

本書力求講解淺顯明白。在技術探討上,盡可能地深入透徹;在每一字的描述上,盡可能地簡單易懂。本書適用于所有希望提高軟件設計水平的程序員、軟件工程師,同時,對于軟件設計師與系統(tǒng)架構師也具有一定的參考價值。從實踐分享的視角來看,書的內容編寫地非常認真。作者從自身工作的經(jīng)歷,分享了自己對軟件設計的理解,并以設計原則這樣的方式,來分享最宏觀層面上的要點??偨Y、思考的分量,可見一斑。本書有些章節(jié)很有新意,注意到了利用自身實踐過的設計模式,以真實示例的方式來介紹如何靈活使用各種設計模式。此舉對讀者的實際工作,頗有幫助,愿為推薦?!  鏖T子中國中央研究學院,首席架構師

編輯推薦

《軟件設計精要與模式(第2版)》:“給我一個支點,我就能撬起地球”,關鍵不在于力量有多大,而在于如何合理地利用力量。軟件設計同樣如此,思想的確立,技巧的把握,將在很大程度上制約軟件架構的合理性?!盾浖O計精要與模式(第2版)》力圖通過大量的項目實踐,并與軟件設計思想完美結合,充分展示軟件設計之美,以及設計“力量”的巧妙運用。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    軟件設計精要與模式 PDF格式下載


用戶評論 (總計3條)

 
 

  •   挺不錯的書,更透徹的理解設計模式。
  •   值得一看,用易懂的例子講解了設計格式的好處,分析在日常開發(fā)過程中用到的模式,其實模式無處不在。
  •   內容太深奧 若沒有很扎實的開發(fā)基礎完全看不懂 這書適合有很長工作經(jīng)驗的開發(fā)人員看 不適合沒項目經(jīng)驗的新人看
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7