軟件設計精要與模式

所属分类:軟件工程及軟件方法學  
出版时间:2010-4   出版时间:電子工業出版社   作者:張逸   页数:450  

前言

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

内容概要

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

作者简介

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

书籍目录

第1篇 設計之要第1章 設計之道1.1 計劃的設計與演進的設計1.2 架構的標準1.3 過度設計,還是簡單設計1.4 需要設計模式嗎1.5 重構是必然的1.6 UML重要嗎1.7 測試驅動開發第2章 對象法則2.1 面向對象思想2.2 面向對象核心要素2.2.1 封裝2.2.2 繼承2.2.3 多態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 封裝對象創建的變化3.2.3 封裝對象結構的變化3.3 解耦具體依賴3.3.1 配置文件與反射技術3.3.2 表驅動法3.3.3 慣例優于配置3.3.4 依賴注入第4章 體驗重構4.1 一個階乘容器4.2 代碼的壞味道4.3 需求發生變化4.4 運用重構利器4.5 引入設計模式第5章 測試驅動開發5.1 發現價值與生產價值5.2 運用面向對象編程思想5.3 適時小結5.4 收獲價值5.5 無上之力第2篇 NET框架與設計模式第6章 NET中的工廠方法模式6.1 “嫁禍江東”之計6.2 WebRequest對象的創建6.3 改造工廠方法模式6.4 實現良好的可擴展性6.5 慣例優于配置第7章. NET中的合成模式7.1 字處理軟件7.2 NET框架中的控件7.3 “復合方式”的合成模式第8章 .NET中的裝飾器模式8.1 一步一步走向裝飾器模式8.2 NET框架中對流的處理第9章 NET中的迭代器模式9.1 分辨對象的職責9.2 實現迭代器模式9.3 迭代器模式大觀園9.4 迭代器模式在.NET框架中的實現9.5 通過yieldreturn實現迭代器9.6 C#3.0對迭代器模式的支持第10章 NET中的策略模式10.1 稅務系統10.2 利用委托實現策略模式10.3 NET框架中的Provider對象第11章 NET中的命令模式11.1 考勤管理系統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 非循環訪問者模式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章 數據訪問層第25章 消息處理第26章 ASP.NET緩存第27章 業務邏輯層第28章 變現層參考文獻

章节摘录

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

媒体关注与评论

本书力求讲解浅显明白。在技术探讨上,尽可能地深入透彻;在每一字的描述上,尽可能地简单易懂。本书适用于所有希望提高软件设计水平的程序员、软件工程师,同时,对于软件设计师与系统架构师也具有一定的参考价值。从实践分享的视角来看,书的内容编写地非常认真。作者从自身工作的经历,分享了自己对软件设计的理解,并以设计原则这样的方式,来分享最宏观层面上的要点。总结、思考的分量,可见一斑。本书有些章节很有新意,注意到了利用自身实践过的设计模式,以真实示例的方式来介绍如何灵活使用各种设计模式。此举对读者的实际工作,颇有帮助,愿为推荐。  ——西门子中国中央研究学院,首席架构师

编辑推荐

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

图书封面




    軟件設計精要與模式下載



用户评论 (总计3条)

 
 

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

計算機與互聯網 PDF免费下载,軟件工程及軟件方法學PDF免费下载。 计算机教程网 

计算机教程网 @ 2017