設(shè)計(jì)模式

出版時間:2009-1  出版社:電子工業(yè)出版社  作者:王翔  頁數(shù):652  
Tag標(biāo)簽:無  

前言

  如果你要開發(fā)一個小型的系統(tǒng),整個系統(tǒng)只有兩三人,系統(tǒng)活不過五年,商業(yè)邏輯單純,程序代碼不超過萬行,那么你隨便做,影響不大。反之,若要架構(gòu)大型系統(tǒng),你需要慎思,套用模型與架構(gòu),將前人的經(jīng)驗(yàn)當(dāng)作基石,這樣系統(tǒng)設(shè)計(jì)才不至于陷入發(fā)散。  然而,你不會一開始就做大系統(tǒng),那樣風(fēng)險太高。因此,要練習(xí),最好從小系統(tǒng)開始使用模型與架構(gòu),這樣才能檢討與學(xué)習(xí),日后方能在大系統(tǒng)中自如運(yùn)用?! ∑髽I(yè)信息系統(tǒng)現(xiàn)今面臨著大量的整合需求,需要提供深入的分析應(yīng)用和靈活的應(yīng)變流程。但系統(tǒng)整合的復(fù)雜度是彼此系統(tǒng)復(fù)雜度的乘積,系統(tǒng)問的安全、彈性、效率、擴(kuò)充性、可用性……彼此互相掣肘,此時,企業(yè)需要接觸廣、想得深、能定方向的架構(gòu)師。而熟悉設(shè)計(jì)模式是架構(gòu)師的養(yǎng)成基礎(chǔ),要求對于問題的分類與解法有一定的認(rèn)知。  有經(jīng)驗(yàn)的設(shè)計(jì)者們,抽象出系統(tǒng)開發(fā)的原則與標(biāo)準(zhǔn)問題的設(shè)計(jì)解法,而GOF于十幾年前提出的23種模式是其中的佼佼者。但畢竟空有概念,仍難落實(shí)到你日常使用的程序語言中來。坊間許多圖書作者利用不同的程序語言,例如C++、Vistlal Basic、.NET、Java等,實(shí)現(xiàn)GOF的23種模式,配合UML的模型說明,讓你可以方便地應(yīng)用在自己的開發(fā)環(huán)境中?! ”緯淖髡咄跸栌卸嗄甑拈_發(fā)經(jīng)驗(yàn),參與過多個千萬乃至十億行代碼的大工程,他將經(jīng)驗(yàn)融于設(shè)計(jì)模式中,以c}}重新實(shí)現(xiàn)了GOF的模式,同時加入了新近的設(shè)計(jì)想法,如SOA與Web Setvices等,以及相對于其他設(shè)計(jì)模式而言較新的.NET Framework實(shí)現(xiàn)技術(shù),如泛型、3.0的WCF等。在本書中他除了正向地以C#展現(xiàn)多個不同用途的模式外,還提供了日后可重復(fù)驗(yàn)證與測試的單元測試碼?! ∠到y(tǒng)分析與設(shè)計(jì)是門藝術(shù),問題的解法與何為問題是交織的,而各模式的搭配使用技巧不同,要領(lǐng)存乎一心,須要巧思與反復(fù)琢磨,方可有好的解法。本書立意明確,除了告訴你問題的類型與解法,還提供了可以立即演繹的程序代碼。相信這本案頭的工具書可以提供你一個不錯的思維模式,幫你造就有彈性、能擴(kuò)充、易維護(hù)的軟件實(shí)體?! №氁嵝涯愕氖?,抽象化的思考、封裝與重用的設(shè)計(jì)神髓在心中,而不是落在紙上的程序代碼,閱讀此書時,不要停止在僅Copy and Paste程序代碼。

內(nèi)容概要

  本書基于C# 2.0的語法,試圖將GOF 23中的模式以一種可工程化的公共庫而非Example的方式呈現(xiàn)給讀者。內(nèi)容包括以下7部分?! 〉?篇主要是概括性的介紹;第2篇創(chuàng)建型模式介紹通過將實(shí)例化職責(zé)委托他方對象的辦法,隔離客戶程序與具體類型實(shí)例化的依賴關(guān)系,保證客戶程序(或者外部系統(tǒng))獲得期望具體類型實(shí)例的、同時不必發(fā)生直接的引用;第3篇結(jié)構(gòu)型模式的重點(diǎn)在于如何通過靈活的體系組織不同的對象,并在此基礎(chǔ)上完成更為復(fù)雜的類型(或者類型系統(tǒng)),而參與組合的各類型之間始終保持盡量松散的結(jié)構(gòu)關(guān)系;第4篇行為型模式關(guān)注于應(yīng)用運(yùn)行過程中算法的提供和通信關(guān)系的梳理;第5篇主要介紹小顆粒度基礎(chǔ)模式和應(yīng)用案例;第6篇主要介紹應(yīng)用全局的模式化的實(shí)現(xiàn)方法,包括現(xiàn)在已經(jīng)被普遍應(yīng)用的N層模式及某些關(guān)鍵性框架產(chǎn)品采用的“微內(nèi)核”模式;第7篇主要是一些針對Web和Web Service領(lǐng)域的模式設(shè)計(jì)技術(shù)?! ”緯饕槍#語言和.NET Framework平臺有一定了解或有一定應(yīng)用經(jīng)驗(yàn)的用戶,尤其適于那些希望運(yùn)用模式技術(shù)在設(shè)計(jì)和開發(fā)方面多應(yīng)對些挑戰(zhàn)的用戶。

作者簡介

  王翔,軟件架構(gòu)師,主要從事.NET、XML、公鑰基礎(chǔ)設(shè)施的開發(fā)。專注于數(shù)據(jù)(尤其是XML信息)的生產(chǎn)、加工、交換、提煉等過程。最近參與了一系列有關(guān)應(yīng)用密碼技術(shù)和PKI環(huán)境保護(hù)信息系統(tǒng)數(shù)據(jù)安全的項(xiàng)目?! ∽钕矚g數(shù)學(xué),平常案頭總是擺一本數(shù)學(xué)練習(xí)題。閑暇時間喜歡寫作,通過發(fā)表多種技術(shù)文章與國內(nèi)外同行交流各種數(shù)據(jù)應(yīng)用經(jīng)驗(yàn)?! №?xiàng)目間隙經(jīng)常到各海濱城市徒步旅行、野外露營、出海航行、極限運(yùn)動,這幾年烹飪也漸漸成為個人主要愛好。

書籍目錄

導(dǎo)讀第1篇 預(yù)備知識——發(fā)掘用C#語言進(jìn)行面向?qū)ο蠡O(shè)計(jì)的潛力第1章 重新研讀C#語言1.1 說明1.2 C# 部分語法內(nèi)容擴(kuò)展1.2.1 命名空間(Namespace)1.2.2 簡潔的異步通知機(jī)制——委托(Delegate)1.2.3 考驗(yàn)?zāi)愕乃惴ǔ橄竽芰Α盒停℅enerics)1.2.4 用作標(biāo)簽的方式擴(kuò)展對象特性——屬性(Attribute)1.2.5 用索引器簡化的C#類型信息訪問1.2.6 融入C#語言的迭代機(jī)制——迭代器(Iterator)1.3 可重載運(yùn)算符(Overloadable Operators)與轉(zhuǎn)換運(yùn)算符(Conversion Operators)1.3.1 The Day After Someday1.3.2 用于有限的狀態(tài)迭代1.3.3 操作集合1.3.4 類型的適配1.3.5 小結(jié)1.4 面向插件架構(gòu)和現(xiàn)場部署的配置系統(tǒng)設(shè)計(jì)1.4.1 認(rèn)識.NET Framework提供的主要配置實(shí)體類1.4.2 應(yīng)用實(shí)例1.4.3 小結(jié)1.5 實(shí)現(xiàn)依賴注入1.5.1 背景介紹1.5.2 示例情景1.5.3 Constructor注入1.5.4 Setter注入1.5.5 接口注入1.5.6 基于Attribute實(shí)現(xiàn)注入——Attributer 531.5.7 小結(jié)第2章 開始每個設(shè)計(jì)模式之前2.1 new()的替代品2.2 準(zhǔn)備一個輕量的內(nèi)存Cache2.3 準(zhǔn)備一個集中訪問配置文件的Broker 642.4 Web?Not Web?2.5 小結(jié)第2篇 創(chuàng)建型模式——管理并隔離對象實(shí)例的構(gòu)造過程第3章 工廠&工廠方法模式3.1 簡單工廠3.1.1 最簡單的工廠類3.1.2 根據(jù)規(guī)格加工產(chǎn)品——參數(shù)化工廠3.1.3 簡單工廠的局限性3.2 經(jīng)典回顧3.3 解耦Concrete Factory與客戶程序3.4 基于配置文件的Factory3.5 批量工廠3.5.1 開發(fā)情景3.5.2 定義產(chǎn)品類型容器3.5.3 定義批量工廠和產(chǎn)品類型容器3.5.4 增設(shè)生產(chǎn)指導(dǎo)顧問——Director 893.5.5 由Director指導(dǎo)的客戶程序3.6 基于類型參數(shù)的Generic Factory3.7 委托工廠類型3.8 小結(jié)第4章 單件模式4.1 經(jīng)典回顧4.2 線程安全的Singleton4.3 細(xì)節(jié)決定成敗4.4 細(xì)顆粒度Singleton4.4.1 背景討論4.4.2 解決桌面應(yīng)用中細(xì)顆粒度Singleton問題4.4.3 解決Web應(yīng)用中細(xì)顆粒度Singleton問題4.4.4 更通用的細(xì)顆粒度Singleton4.5 自動更新的Singleton4.6 參數(shù)化的Singleton4.7 跨進(jìn)程的Singleton4.8 Singleton的擴(kuò)展——Singleton-N.4.8.1 定義具有執(zhí)行狀態(tài)的抽象對象4.8.2 定義相應(yīng)的Singleton-N實(shí)例集合4.8.3 在基本Singleton模式實(shí)現(xiàn)的框架下引入實(shí)例集合4.9 引入配置文件管理Singleton4.10 基于類型參數(shù)的Generic Singleton4.11 由工廠類型協(xié)助Singleton實(shí)例管理4.12 小結(jié)第5章 抽象工廠模式5.1 經(jīng)典回顧5.2 按計(jì)劃實(shí)施生產(chǎn)5.2.1 為抽象工廠補(bǔ)充類型映射器5.2.2 處理模式的硬傷5.3 定義計(jì)劃與生產(chǎn)間的映射關(guān)系5.3.1 分析5.3.2 登記映射關(guān)系5.3.3 用TypeMapper協(xié)助工廠生產(chǎn)5.3.4 定義實(shí)體TypeMapper和實(shí)體工廠5.3.5 實(shí)現(xiàn)裝配機(jī)制5.4 配置生產(chǎn)計(jì)劃5.5 基于Delegate的生產(chǎn)外包5.6 小結(jié)第6章 創(chuàng)建者模式6.1 經(jīng)典回顧6.2 異步調(diào)用的BuildUp() 1436.3 為Builder打個標(biāo)簽6.3.1 完成工具類6.4 具有裝配/卸裁能力的Builder 1506.5 看著圖紙加工——登記配置文件6.5.1 把UML的對象變成XSD.6.5.2 把握梗概——刪除不經(jīng)常變化的內(nèi)容6.5.3 映射為配置節(jié)點(diǎn)或配置元素6.5.4 實(shí)現(xiàn)實(shí)體對象6.5.5 完成流水線生產(chǎn)6.6 用迭代器控制流水線6.7 小結(jié)第7章 原型模式7.1 經(jīng)典回顧7.2 表面模仿還是深入模仿7.2.1 概念7.2.2 制作實(shí)現(xiàn)克隆的工具類型7.2.3 克隆也要稍微保留點(diǎn)個性 7.2.4 定制并管理的克隆過程7.3 重新定義原型方法7.4 同時支持XML和二進(jìn)制序列化的泛型集合類型處理7.5 小結(jié)第3篇 結(jié)構(gòu)型模式——針對變化組織靈活的對象體系第8章 適配器模式8.1 說明8.2 經(jīng)典回顧8.3 進(jìn)一步擴(kuò)展適配范圍的組適配器8.4 Adapter——Adapter互聯(lián)模式8.4.1 分析8.4.2 方式1:客戶程序直接調(diào)度Adapter 1928.4.3 方式2:基于標(biāo)準(zhǔn)約定調(diào)度Adapter 1928.4.4 方式3:借助反射和約定完成異步調(diào)用8.5 用配置約定適配過程8.6 XML數(shù)據(jù)的專用適配機(jī)制8.7 小結(jié)第9章 橋模式9.1 說明9.2 經(jīng)典回顧9.3 將復(fù)雜性進(jìn)一步分解后的多級橋關(guān)系9.4 看著“圖紙”造橋9.5 具有約束關(guān)系的橋9.6 小結(jié)第10章 組合模式10.1 說明10.2 經(jīng)典回顧10.3 用迭代器遍歷組合類型10.4 適于XML信息的組合模式10.5 小結(jié)第11章 裝飾模式11.1 說明11.2 經(jīng)典回顧11.3 具有自我更新特征的裝飾模式11.3.1 分析11.3.2 抽象裝飾接口11.3.3 抽象狀態(tài)接口11.3.4 依據(jù)當(dāng)前狀態(tài)修改裝飾11.3.5 測試驗(yàn)證11.4 設(shè)計(jì)Decorator與Builder協(xié)作的產(chǎn)物11.5 把Decorator做成標(biāo)簽11.5.1 更“徹底”的Attribute注入11.5.2 方式1:采用.NET平臺自帶的AOP機(jī)制實(shí)現(xiàn)11.5.3 方式2:自定義代理攔截框架方式11.5.4 進(jìn)一步分析11.6 小結(jié)第12章 外觀模式12.1 說明12.2 經(jīng)典回顧12.3 Facade接口12.4 Remote Facade12.5 面向性能考慮的升級版Remote Facade——Data Transfer Object模式12.6 平臺、開發(fā)語言無關(guān)的抽象Facade接口——WSDL12.7 讓使用者更加方便的Fluent Interface設(shè)計(jì)12.8 小結(jié)第13章 享元模式13.1 說明13.2 經(jīng)典回顧13.3 制訂共享計(jì)劃13.4 綜合性的共享體系——Object Pool 26413.4.1 應(yīng)用背景13.4.2 總體技術(shù)結(jié)構(gòu)13.4.3 抽象類型實(shí)體設(shè)計(jì)13.4.4 享元模式的典型應(yīng)用——緩沖13.4.5 示例13.5 用于并行處理的線程級享元13.6 通過Delegate和隊(duì)列實(shí)現(xiàn)異步Flyweight 27013.7 小結(jié)第14章 代理模式14.1 說明14.2 經(jīng)典回顧14.3 遠(yuǎn)程訪問代理14.3.1 第1步:定義遠(yuǎn)程訪問的服務(wù)協(xié)議14.3.2 第2步:定義服務(wù)端的配置文件及相應(yīng)的宿主程序14.3.3 第3步:生成客戶端遠(yuǎn)程代理(Proxy)類型14.3.4 第4步:編寫客戶端程序14.4 數(shù)據(jù)訪問代理14.5 對象緩存代理14.6 為代理過程增加預(yù)處理和后續(xù)處理的支持14.6.1 第1步:定義外部處理機(jī)制的抽象結(jié)構(gòu)14.6.2 第2步:定義新增處理的配置信息14.6.3 第3步:定義配置解析對象14.6.4 第4步:修正服務(wù)端和代理類的處理過程14.7 小結(jié)第4篇 行為型模式——算法、控制流和通信關(guān)系的對象化處理第15章 職責(zé)鏈模式15.1 說明15.2 經(jīng)典回顧15.3 用斷點(diǎn)控制鏈?zhǔn)竭^程15.4 鏈?zhǔn)椒磻?yīng)15.5 增加配置約束15.6 小結(jié)第16章 模板方法模式16.1 說明16.2 經(jīng)典回顧16.3 滿足多套模板要求16.4 方法的模板——Delegate16.5 類型的模板——Generic16.6 用配置勾勒的模板16.7 小結(jié)第17章 解釋器模式17.1 說明17.2 經(jīng)典回顧17.3 采用正則表達(dá)式17.4 采用字典17.5 采用XSD17.6 用XSD解釋定制的業(yè)務(wù)語言17.7 小結(jié)第18章 命令模式18.1 說明18.2 經(jīng)典回顧18.3 輕量級的Command——委托18.4 異步Command18.5 把Command打包18.5.1 外觀模式方式18.5.2 組合模式方式18.6 把Command排隊(duì)18.7 小結(jié)第19章 迭代器模式19.1 說明19.2 經(jīng)典回顧19.3 C#化的Iterator 35319.4 小結(jié)第20章 中介者模式20.1 說明20.2 經(jīng)典回顧20.3 基于Delegate和事件的松耦合Mediator 36220.4 根據(jù)配置動態(tài)協(xié)調(diào)通知關(guān)系20.5 SOAP Mediator 36620.6 小結(jié)第21章 備忘錄模式21.1 說明21.2 經(jīng)典回顧21.3 把備忘壓棧21.4 Memento的序列化和持久化21.5 小結(jié)第22章 觀察者模式22.1 說明22.2 經(jīng)典回顧22.3 .NET內(nèi)置的Observer機(jī)制——事件22.4 具有Observer的集合類型22.5 面向服務(wù)接口的Observer 39422.6 小結(jié)第23章 狀態(tài)模式23.1 說明23.2 經(jīng)典回顧23.3 State的序列化和持久化23.4 主動方式State23.5 觸發(fā)式State23.6 涉及用戶交互的狀態(tài)流轉(zhuǎn)23.7 用WF完成更易于編排的State23.8 小結(jié)第24章 策略模式24.1 說明24.2 經(jīng)典回顧24.3 Strategy與Interpreter協(xié)作24.4 充分利用.NET Framework自帶的Strategy接口24.5 動態(tài)策略24.6 小結(jié)第25章 訪問者模式25.1 說明25.2 經(jīng)典回顧25.3 借助反射實(shí)現(xiàn)Visitor 42825.4 用委托使引用關(guān)系更加松散25.5 小結(jié)第5篇 小顆粒度基礎(chǔ)模式和應(yīng)用案例——服務(wù)于細(xì)節(jié)的基礎(chǔ)性模式第26章 成例26.1 說明26.2 Partial Class26.2.1 體現(xiàn)組合關(guān)系26.2.2 從多個側(cè)面刻畫類型26.2.3 與Visual Studio Add-ins的結(jié)合26.2.4 小結(jié)26.3 Gateway26.3.1 封裝本地API的Gateway26.3.2 封裝非C#語言訪問接口26.3.3 封裝通用操作方法26.3.4 小結(jié)26.4 Mapper 44326.4.1 介紹26.4.2 數(shù)據(jù)對象映射器26.4.3 小結(jié)26.5 Registry26.6 Value Object 45526.7 通用數(shù)據(jù)載體DataSet和DataTable26.8 Context 458第27章 GOF總結(jié)及應(yīng)用案例27.1 GOF總結(jié)27.1.1 回顧GOF27.2 應(yīng)用案例需求說明27.3 發(fā)現(xiàn)和分析27.4 模式應(yīng)用27.4.1 已經(jīng)采用的模式27.4.2 如何實(shí)現(xiàn)與具體數(shù)據(jù)源無關(guān)27.4.3 提供執(zhí)行前后定制處理的能力27.4.4 設(shè)計(jì)一個結(jié)構(gòu)更加靈活的連接串配置訪問機(jī)制27.5 小結(jié)第6篇 部分架構(gòu)模式——面向應(yīng)用全局的模式化處理第28章 MVC模式28.1 說明28.2 模式介紹28.3 示例28.3.1 混合方式28.3.2 分解對象職責(zé)28.3.3 主動方式M/V/C28.4 小結(jié)第29章 管道—過濾器模式29.1 說明29.2 登機(jī)的管道流程29.2.1 數(shù)據(jù)源發(fā)起的推方式29.2.2 數(shù)據(jù)接收方發(fā)起的拉方式29.2.3 中介對象發(fā)起的推拉混合方式29.2.4 數(shù)據(jù)源/數(shù)據(jù)接收方分別發(fā)起的銜接方式29.3 示例29.3.1 推方式示例29.3.2 增加主動方式的Filter 50829.4 小結(jié)第30章 出版—預(yù)訂模式30.1 說明30.2 生活中無處不在的“預(yù)訂”30.2.1 面向單一主題的本地觀察者模式30.2.2 增加Proxy實(shí)現(xiàn)面向單一主題的分布式觀察者模式30.2.3 用出版者集中管理預(yù)訂30.2.4 面向物理環(huán)境設(shè)計(jì)更多出版預(yù)訂模式30.3 示例30.3.1 數(shù)據(jù)實(shí)體模型部分30.3.2 業(yè)務(wù)實(shí)體模型部分30.3.3 具體實(shí)體對象部分30.3.4 單元測試30.4 小結(jié)第31章 Broker模式31.1 說明31.2 越來越龐雜的分布式系統(tǒng)交互之感31.3 示例31.4 小結(jié)第32章 消息總線模式32.1 說明32.2 用總線梳理企業(yè)系統(tǒng)環(huán)境32.2.1 分隔區(qū)域條件下的消息總線32.3 小結(jié)第7篇 部分Web和Web Service模式——面向服務(wù)開發(fā)中的模式化處理第33章 頁面控制器模式33.1 說明33.2 用對象化思維抽象和擴(kuò)展頁面操作邏輯33.3 示例33.4 小結(jié)第34章 實(shí)現(xiàn)Web服務(wù)依賴倒置34.1 Web Service的模式化特征34.2 第一層的包裝34.2.1 Aggregation34.2.2 Contain34.3 SOA環(huán)境下典型的Web Service開發(fā)方式34.4 依賴倒置原則及其在Web Service中的應(yīng)用34.4.1 分析34.4.2 實(shí)現(xiàn)示例34.5 基于WCF的工程化實(shí)現(xiàn)34.5.1 實(shí)現(xiàn)示例34.5.2 借助WCF擴(kuò)展服務(wù)的對象化特征34.6 小結(jié)第35章 Web服務(wù)適配器模式35.1 說明35.2 Web Service下的接口適配問題35.2.1 常規(guī)情景分析35.2.2 Web Service間連續(xù)交互適配35.2.3 實(shí)施方式35.3 采用標(biāo)準(zhǔn)Web Service類型的示例35.3.1 單純數(shù)據(jù)XSD適配35.3.2 服務(wù)方法兼容性適配35.3.3 其他說明35.4 采用WCF的示例35.4.1 用Data Contract定義數(shù)據(jù)Schema35.4.2 定義不同的類型轉(zhuǎn)換方式示例35.5 小結(jié)第36章 Web服務(wù)數(shù)據(jù)傳輸對象模式36.1 說明36.2 Web Service接口批量交互中的性能問題36.2.1 DTO對象36.2.2 DTO與消費(fèi)者服務(wù)的對應(yīng)關(guān)系36.2.3 部署設(shè)計(jì)考慮36.2.4 結(jié)構(gòu)36.3 示例36.3.1 沒有DTO對象的情況36.3.2 增加DTO對象的情況36.4 小結(jié)36.5 附件36.5.1 實(shí)現(xiàn)DTO數(shù)據(jù)裝載的兩種方式第37章 Web服務(wù)事件監(jiān)控器模式37.1 說明37.2 如何為普通Web Service封裝事件機(jī)制37.3 示例37.4 小結(jié)第38章 Web服務(wù)攔截過濾器模式38.1 說明38.2 通過攔截完成自定義特性的透明擴(kuò)展38.2.1 實(shí)現(xiàn)方式38.2.2 .NET平臺的實(shí)現(xiàn)技術(shù)38.3 示例138.3.1 基于ASP.NET Web Service的IHttpModule方式138.3.2 基于WCF自定義攔截方式38.4 小結(jié)附錄A 面向關(guān)系數(shù)據(jù)和XML數(shù)據(jù)的領(lǐng)域邏輯模式A.1 說明A.2 實(shí)現(xiàn)業(yè)務(wù)領(lǐng)域邏輯的主要方法A.2.1 整體邏輯結(jié)構(gòu)A.2.2 性能改進(jìn)A.2.3 面向關(guān)系數(shù)據(jù)庫的業(yè)務(wù)服務(wù)設(shè)計(jì)A.2.4 面向XML數(shù)據(jù)的擴(kuò)展設(shè)計(jì)A.2.5 配置機(jī)制設(shè)計(jì)A.3 示例A.3.1 示例情景A.3.2 測試內(nèi)容準(zhǔn)備A.3.3 實(shí)際測試過程A.4 小結(jié)附錄B 基于XML的應(yīng)用建模B.1 說明B.2 世界是平的,但更是多元的B.2.1 更具擴(kuò)展性的數(shù)據(jù)模型——XMLB.2.2 讓非結(jié)構(gòu)化數(shù)據(jù)可以被識別B.2.3 應(yīng)對數(shù)據(jù)和內(nèi)容的集成B.2.4 新的應(yīng)用擴(kuò)展B.2.5 應(yīng)對語義網(wǎng)絡(luò)的復(fù)雜性B.3 小結(jié)索引

章節(jié)摘錄

  第1篇 預(yù)備知識——發(fā)掘用C#語言進(jìn)行面向?qū)ο蠡O(shè)計(jì)的潛力  第1章 重新研讀C#語言  1.1 說明  本章以工程化使用為目的,對C#和.NET Framework提供的幾個平時開發(fā)時不引人注意的特征進(jìn)行介紹,它們對于提高代碼擴(kuò)展性、靈活性很關(guān)鍵,務(wù)求用“很C#”的方式解決以往設(shè)計(jì)模式Example之外必須面臨的一些問題。它們主要包括:  ·Namespace(命名空間);  ·Delegate(委托);  ·Generics(泛型);  ·Attribute(屬性);  ·Indexer(索引器);  ·Iterator(迭代器);  ·Overloadable Operators(可重載運(yùn)算符)與Conversion Operators(轉(zhuǎn)換運(yùn)算符);  ·Configuration(對象化配置訪問);  由于降低類間耦合關(guān)系一直是設(shè)計(jì)上控制變化范圍的常用手段之一,所以在設(shè)計(jì)模式之外補(bǔ)充有關(guān)用C#實(shí)現(xiàn)“依賴注入”(Dependency Injection)的方法。  有關(guān)設(shè)計(jì)模式在Threading(多線程)模型下實(shí)現(xiàn)需注意的內(nèi)容,筆者將在相關(guān)章節(jié)的工程化分析部分介紹。  1.2 C# 部分語法內(nèi)容擴(kuò)展  1.2.1 命名空間(Namespace)  尷尬的現(xiàn)實(shí)狀況  是否有很好的命名空間規(guī)劃是工程化代碼與非工程化代碼一個很明顯的區(qū)別?! ∮绕鋵τ诖笮偷慕M織而言,如果涉及的產(chǎn)品線、項(xiàng)目、公共平臺很多,如何通過命名空間把所有的代碼資源有效地組織起來,恐怕是實(shí)施項(xiàng)目前要考慮的主要問題。作為一個樹形體系,最好有組織級統(tǒng)一的分類標(biāo)準(zhǔn),目的很明確——用的時候能很容易找到?! ∽龅竭@點(diǎn)并不容易,原因如下:  ·習(xí)慣中很難改變的縮寫命名:CAD很容易在聲明的時候被命名為.***CAD,但事實(shí)上Design Guideline建議的是Cad,這樣使用者和定義者之間就存在一些小小的錯位。在99%的情況下這個問題不會發(fā)生,因?yàn)槟灰粋€點(diǎn),IntelliSense就幫您列出來了,另外的1%則發(fā)生在后綁定調(diào)用的情況下。  ·不統(tǒng)一的命名:涉及加密的庫,可能A被定義為Encrypt,B被定義為Crypto或Cryptography。來自匈牙利命名法的“遺毒”也常常成為新舊開發(fā)人員統(tǒng)一命名的障礙,而且會直接影響到命名空間的定義。  ·組織或您上司的認(rèn)同:技術(shù)總監(jiān)不認(rèn)為命名規(guī)范是他需要關(guān)心的事情,下面的架構(gòu)師更關(guān)心的是結(jié)構(gòu),再下面的項(xiàng)目經(jīng)理關(guān)注的是資源調(diào)度和進(jìn)度,具體的實(shí)施人員恐怕沒有多少機(jī)會規(guī)定其他同事該怎么命名,那么誰來關(guān)心命名空間呢?  企業(yè).NET類型系統(tǒng)的命名空間規(guī)劃示例  無論如何,即便沒有辦法在組織級統(tǒng)一命名空間,為了您所帶領(lǐng)的團(tuán)隊(duì)現(xiàn)在做的工作在以后能更容易地被應(yīng)用,或者僅僅為你自己的職業(yè)生涯好好“儲蓄”,在動筆編寫第一行程序之前,先規(guī)劃好命名空間吧。

媒體關(guān)注與評論

  本書立意明確,除了告訴你問題的類型與解法,還提供了可以立即演繹的程序代碼,相信這本案頭的工具書可以提供你一個不錯的思維模式,幫你造就有彈性、能擴(kuò)充、易維護(hù)的軟件實(shí)體?! 『倬础∥④汳VP,臺灣恒逸資訊資深講師,“數(shù)據(jù)庫鐵人”  作者從GOF23種經(jīng)典設(shè)計(jì)模式開始,帶你走進(jìn)模式的失門,小到細(xì)粒度的基礎(chǔ)模式,大到粗粒度的架構(gòu)模式,本書都做了詳盡的講解。如果您還在為了軟件需求的無盡變化而煩惱不斷,為了在軟件設(shè)計(jì)領(lǐng)域更上一層樓而苦苦思索,希望本書能夠帶給您一些啟發(fā)?! ±顣姟∥④汳VP,博客園專家,IT168專欄作者  本書很有特色的地方,就是以工程角度來闡釋模式,相較純粹的模式之說,則更具普遍的下手角度,C≠語言的高級特性結(jié)合設(shè)計(jì)模式的經(jīng)典思想,兩者相得益彰?! ⊥鯘∥④汳VP,博客園專家,《你必須知道的.NET》作者

編輯推薦

  專家推薦  本書立意明確,除了告訴你問題的類型與解法,還提供了可以立即演繹的程序代碼,相信這本案頭的工具書可以提供你一個不錯的思維模式,幫你造就有彈性、能擴(kuò)充、易維護(hù)的軟件實(shí)體?! 『倬础∥④汳VP,臺灣恒逸資訊資深講師,“數(shù)據(jù)庫鐵人”  作者從GOF23種經(jīng)典設(shè)計(jì)模式開始,帶你走進(jìn)模式的失門,小到細(xì)粒度的基礎(chǔ)模式,大到粗粒度的架構(gòu)模式,本書都做了詳盡的講解。如果您還在為了軟件需求的無盡變化而煩惱不斷,為了在軟件設(shè)計(jì)領(lǐng)域更上一層樓而苦苦思索,希望本書能夠帶給您一些啟發(fā)?! ±顣姟∥④汳VP,博客園專家,IT168專欄作者  本書很有特色的地方,就是以工程角度來闡釋模式,相較純粹的模式之說,則更具普遍的下手角度,C≠語言的高級特性結(jié)合設(shè)計(jì)模式的經(jīng)典思想,兩者相得益彰。  王濤 微軟MVP,博客園專家,《你必須知道的.NET》作者

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    設(shè)計(jì)模式 PDF格式下載


用戶評論 (總計(jì)29條)

 
 

  •      看了樣章.感覺這本書正是我需要的.一直以來都是JAVA的設(shè)計(jì)模式書.dotnet的書鳳毛麟角.僅有的幾本還高屋建瓴的描述設(shè)計(jì)模式的理念..記得第一次看設(shè)計(jì)模式的時候感嘆于設(shè)計(jì)模式的精妙.卻不知如何下手應(yīng)用于項(xiàng)目.在項(xiàng)目中想套入設(shè)計(jì)模式時..費(fèi)了很大的力氣還感覺僅僅是為了實(shí)現(xiàn)設(shè)計(jì)模式而去用設(shè)計(jì)模式...認(rèn)真讀了試讀章節(jié).我想這本書正是我需要的..焦急等待到貨中ing....
  •     原諒我用了一個普通再也普通不過的標(biāo)題:這是一本好書,因?yàn)槲艺也坏胶线m的字眼來形容它。當(dāng)?shù)谝淮文玫奖緯鴷r,就被她深深的吸引:先說封面,淡雅優(yōu)美,給人一種心曠神怡的感覺,讓你感覺她不再是一本技術(shù)書,而更像是藝術(shù)書;再說內(nèi)容,與眾不同,設(shè)計(jì)模式類的書籍多是“理論”與“實(shí)踐”相分離,讀者可以好不容易理解了理論知識,卻不知道如何實(shí)踐,而理論和實(shí)踐相結(jié)合,是本書一大特色,讓你看完本書后不再停留在設(shè)計(jì)模式是什么的階段,而是進(jìn)入如何使用、用好設(shè)計(jì)模式的層次。
      
      這真的是一本好書!
      
  •     已經(jīng)上市月余,其間收到很多朋友的支持和批評意見,感覺是該對這版作些反思的時候。
      
      書稿是去年5月份提交的,當(dāng)時還是以.NET 3.0為主的開發(fā),最近開始進(jìn)入.NET 3.5以及Java 5的混合時代,也在考慮可能的話要在再版里加上些新的內(nèi)容。
       尤其是數(shù)據(jù)訪問模式、集成模式和信息安全模式,語法上也要把C# 3.0的內(nèi)容加進(jìn)去。
     ?。ㄟ@樣很多經(jīng)典GOF23的內(nèi)容其實(shí)用新的語法完成更快,更方便,代碼量大大減少,出錯的可能性也會減少。:) )
      
      因?yàn)轭^一次出書,希望大家多批評指正。因?yàn)槲仪岸碎_發(fā)的經(jīng)驗(yàn)很少,希望有機(jī)會和大家多交流AJAX、UI部分的模式技術(shù)及成例(模式化技巧)。
  •     工作這么多年,坦率的說,設(shè)計(jì)模式方面的書,我很少有看到國內(nèi)作者出版的書讓我眼睛一亮的感覺。
      《大話設(shè)計(jì)模式》是一本,而王翔的《設(shè)計(jì)模式--基于C#的工程化實(shí)現(xiàn)及擴(kuò)展》算是第二本吧。。
      
      讀書也不少了,感覺圖書有“道”和“術(shù)”之分。
      道,一種思想、理念或方法,重在思維的改變。
      術(shù),一種技巧、工具或?qū)嵺`,重在行為的改變。
      
      但是,由道到術(shù)、或者由術(shù)到道,這種思想的轉(zhuǎn)換或者說理念的落地,我認(rèn)為是最難的。否則,怎么會有《易經(jīng)》之后還有《易傳》……怎么會有那么多古人去為經(jīng)典寫釋義呢?
      
      大智慧的人是能夠?qū)?fù)雜的問題簡單化,讓大眾能夠看了就懂、懂了就會做、做了就能產(chǎn)生效果。。。。。??梢钥吹阶髡咴噲D在努力做到這一點(diǎn)。
  •     有兩位讀者這樣評價:
      1.http://www.douban.com/review/1646688/
      
      如獲至寶,非??春眠@本書,雖然有點(diǎn)偏貴,但是紙張和內(nèi)涵都非常高,是我的最厚的一本地鐵讀物,每天乘地跌城鐵捧這本書看實(shí)在是有些累,呵呵!
      
      2. http://www.douban.com/review/1623339/
      
      《大話模式設(shè)計(jì)》、《c# 3.0 Design Pattern》、《Design Pattern》等書基本上都是以一種高屋建瓴的方式來闡述的, 所給的示范例子都是一個玩具例子,不是很有說服力 。
        
      以至于我到目前都還不知道如何在恰當(dāng)?shù)臅r候使用什么設(shè)計(jì)模式。直到看到這本書,才將我從這種狀況中解救出來。這本書以實(shí)際工程為依托,不僅剖析了各個設(shè)計(jì)模式,還給出了如何應(yīng)用該設(shè)計(jì)模式、什么時候去應(yīng)用該設(shè)計(jì)模式 、 為什么要在這段代碼中應(yīng)用這個設(shè)計(jì)模式
        
      從What,How,When,Why多個角度詳細(xì)闡述了設(shè)計(jì)模式的方方面面。
        
      此外,本書還在項(xiàng)目一開始引入了在正規(guī)軟件開發(fā)中非常必須的單元測試 ,使得整書真正成為一本面向?qū)嶋H工程的書籍.
      
  •     春節(jié)前拿到了書,然后就開始死勁咀嚼........
      書中涉及到了很多在C#特有語法下的設(shè)計(jì)模式實(shí)現(xiàn),也就是非常的語言化,這些設(shè)計(jì)模式也可以說在C#3.5新的語言特性下煥發(fā)了青春.......哈哈,不要扔磚啊
      
      當(dāng)然書中對設(shè)計(jì)模式并沒有局限于23種前人總結(jié)好的設(shè)計(jì)模式,還有些補(bǔ)充,還有應(yīng)用在新近出現(xiàn)的xml,web service等場景下的設(shè)計(jì)模式實(shí)現(xiàn)。
      總之非??春眠@本書,雖然有點(diǎn)偏貴,但是紙張和內(nèi)涵都非常高,是我的最厚的一本地鐵讀物,每天乘地跌城鐵捧這本書看實(shí)在是有些累,呵呵!
  •     昨天上海圖買了本一直垂涎已久的《設(shè)計(jì)模式--基于C#的工廠化實(shí)現(xiàn)及擴(kuò)展》,準(zhǔn)備在春節(jié)期間好好進(jìn)修一下自己,地鐵里翻開書看了看,果然買的物有所值,在前幾頁提到的“依賴關(guān)系不僅僅局限在對象化的設(shè)計(jì)當(dāng)中,而是普遍存在于配置體系,數(shù)據(jù)存儲,服務(wù)體系等”,我就非常贊同,此前很大園內(nèi)的文章在講解設(shè)計(jì)模式的時候,很多時候都是局限于很呆板的類設(shè)計(jì),但是整個系統(tǒng)的設(shè)計(jì),數(shù)據(jù)庫設(shè)計(jì),運(yùn)維體系,xml數(shù)據(jù)交換,分布式大顆粒,都存在著設(shè)計(jì)模式,特別期盼的是作者對于xml方面有很深的見解,期待ing。。。。
      
      另外,書中都涉及到C#的最新特性,也是順道復(fù)習(xí),另外,將C#3.0的新語法實(shí)踐于設(shè)計(jì)模式,我也是從未嘗試過,真是太好了!
      
      一直沒痛下決心買這本書,也是覺得此書很貴,但是這次發(fā)狠心買了,果然很值,書的紙張和封面都不會讓大家失望!
      
      http://www.cnblogs.com/perfectdesign/archive/2009/01/21/1379320.html
  •     由于工作需要,看到基本設(shè)計(jì)模式的書
      比如《大話模式設(shè)計(jì)》
      《c# 3.0 Design Pattern》
      《Design Pattern》等書
      但是這些書基本上都是以一種高屋建瓴的方式來闡述的
      所給的示范例子都是一個玩具例子,不是很有說服力
      以至于我到目前都還不知道如何在恰當(dāng)?shù)臅r候使用什么設(shè)計(jì)模式
      直到看到這本書,才將我從這種狀況中解救出來
      這本書以實(shí)際工程為依托
      不緊剖析了各個設(shè)計(jì)模式
      還給出了如何應(yīng)用該設(shè)計(jì)模式
      什么時候去應(yīng)用該設(shè)計(jì)模式
      為什么要在這段代碼中應(yīng)用這個設(shè)計(jì)模式
      從What,How,When,Why多個角度詳細(xì)闡述了設(shè)計(jì)模式的方方面面
      此外,本書還在項(xiàng)目一開始引入了在正規(guī)軟件開發(fā)中非常必須的單元測試
      使得整書真正成為一本面向?qū)嶋H工程的書籍
      建議大家結(jié)合著《Design Pattern》一起看
      這樣可以獲得工程上的實(shí)踐,而且又有了理論上的提升
  •     
      毫無疑問,“設(shè)計(jì)模式”是程序設(shè)計(jì)中的高級內(nèi)容,正如“面向?qū)ο蟆奔夹g(shù)的初學(xué)者會在繼承、接口、抽象類等概念的泥淖中苦苦跋涉一樣,“設(shè)計(jì)模式”的初學(xué)者也會備覺痛苦,無所適從,而這些相關(guān)內(nèi)容的圖書,也以枯燥乏味和一本正經(jīng)而出名——很多作者喜歡寫“學(xué)術(shù)味道”很濃的書,但他們卻未必喜歡閱讀別人寫的這種書——除了飽受失眠困擾的人。
      
      我常有一種想法,某些知識應(yīng)該是需要使用才去了解,才會有好的效果。例如,當(dāng)我覺得自己寫的程序有股“很壞的味道”時,我會自發(fā)去思考如何改善,我會尋找設(shè)計(jì)模式、面向?qū)ο罄碚摰葧ラ喿x,這樣更加具有針對性,也能讓自己更有滿足感。
      
      該如何尋找適合自己的關(guān)于《設(shè)計(jì)模式》的書籍呢?寓教于樂當(dāng)然最好,但這個目標(biāo)很難達(dá)到,百里未必有一,我們只有退而求其次——內(nèi)容豐富——使得我不必再去買第二本昂貴的書籍(通常這樣的書都讓我的錢包耿耿于懷);第三點(diǎn)則是描述理論的語言能夠是我熟悉的,比如C#;第四是有可操作性,讀者要的不是長篇大論,你告訴我怎么做就好了,至于其中的道理,往往需要在實(shí)踐基礎(chǔ)上再琢磨才能成自己的心得。
      
      王翔的《設(shè)計(jì)模式——基于C#的工程化實(shí)現(xiàn)》 ,在第二、三、四個標(biāo)準(zhǔn)上都是非常合格的,你可以將它看作是一本詳盡的“設(shè)計(jì)模式”辭典和手冊,23種標(biāo)準(zhǔn)模式和擴(kuò)展模式,你幾乎不再需要其它同檔次的書籍來補(bǔ)充;使用C#語言來描述,雖不是一個創(chuàng)舉,但也算是一陣及時雨,總算照顧的日益壯大的.NET程序員群體;而工程化的實(shí)例,則是大多數(shù)用戶的最愛,知其然總是最受歡迎的,更何況也有知其所以然的內(nèi)容。最后,雖然這本書沒法寫得“有趣”,但我們也不必吹毛求疵,“天地尚不全乎”,何況是書籍呢。
      
      讀者 蔣波濤
  •     除了23種設(shè)計(jì)模式,你還想了解哪些模式?書中還擴(kuò)展了一些架構(gòu)模式如Web Service模式。作者如是說:
      
      項(xiàng)目需要,估計(jì)別人的項(xiàng)目中也已經(jīng)越來越多地涉及了這些內(nèi)容。
      
      完成一個項(xiàng)目,不同類型的模式可能要兼容并包,“尺有所短,寸有所長”。
      
      我有一點(diǎn)體會,不管什么類型的模式,哪怕它叫“架構(gòu)”,都應(yīng)該有個“作業(yè)面”(借鑒地質(zhì)、能源行業(yè)常用的詞),每次經(jīng)過抽象和簡化,不管什么模式其實(shí)面對的都是一個相對有限的小場景,頭腦中保存的不是按層次分類的模式,而是一個長長的列表,然后根據(jù)上下文選擇合適的,不要受架構(gòu)層次一定要用所謂的架構(gòu)模式、類層次一定要用《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》中那些對象關(guān)系的羈絆,基于組件化、服務(wù)化,我們已經(jīng)可以較容易地拿捏出這個“作業(yè)面”。
      
      至于這些擴(kuò)展部分,準(zhǔn)備知識恐怕還是經(jīng)典的GOF23和相關(guān)領(lǐng)域的開發(fā)體會。
      
      另外,比較遺憾,沒能在本書中把數(shù)據(jù)訪問模式、集成模式、公鑰體系中的信息安全模式、XML設(shè)計(jì)模式和數(shù)據(jù)庫設(shè)計(jì)模式涵蓋進(jìn)來,如果有幸再版,我希望可以把它們補(bǔ)充進(jìn)來。
      
      可發(fā)布的電子樣章:http://book.cnblogs.com/zt/DesignPatterns/sjms.pdf
      
      該書所有的示例代碼和微軟示例數(shù)據(jù)庫的腳本請下載:
      http://book.cnblogs.com/zt/DesignPatterns/sjms.rar
      
      博客園《設(shè)計(jì)模式——基于C#的工程化實(shí)現(xiàn)及擴(kuò)展》專題:http://book.cnblogs.com/zt/DesignPatterns/
      
  •     僅僅學(xué)會了劍法永遠(yuǎn)也無法達(dá)到武功的最高境界,正如學(xué)會了設(shè)計(jì)模式也無法登上軟件設(shè)計(jì)領(lǐng)域之巔,要經(jīng)過大量的實(shí)戰(zhàn)才行,在實(shí)戰(zhàn)中提高劍法,在實(shí)戰(zhàn)中體會如何“料敵機(jī)先”,如何“活學(xué)活用”。《設(shè)計(jì)模式——基于C#的工程化實(shí)現(xiàn)及擴(kuò)展》正是這樣一本教你進(jìn)行設(shè)計(jì)模式實(shí)戰(zhàn)的好書。本書的目標(biāo)讀者是對C#語言和.NETFramework平臺有一定了解或應(yīng)用經(jīng)驗(yàn)的用戶,尤其適于那些希望能基于模式技術(shù)在設(shè)計(jì)和開發(fā)方面應(yīng)對更多挑戰(zhàn)的用戶。對于具有多年項(xiàng)目經(jīng)驗(yàn)的架構(gòu)師而言,本書的內(nèi)容可能有些膚淺,不過您可以把本書當(dāng)成一個小備忘錄。
  •     
      
      且看《笑傲江湖》中風(fēng)清揚(yáng)的獨(dú)孤九劍:有進(jìn)無退,招招都是進(jìn)攻,使攻敵不得不守。雖只一劍九式,卻是變化無窮,學(xué)到后來,前后式融會貫通,更是威力大增。能料到他要出甚么招,反招卻搶在他頭里。敵人手還沒提起,你長劍已指向他的要害,他再快也沒你快。“料敵機(jī)先”和“活學(xué)活用”這八個字,正是這套劍法的精要所在。
      
      設(shè)計(jì)模式可以當(dāng)做軟件開發(fā)中的獨(dú)孤九劍。在軟件設(shè)計(jì)中最大的敵人就是需求不斷在變化,需求變化無休無止,軟件交付日期也就無限期地延遲。我們無法做到以不變應(yīng)萬變,但如果能提前預(yù)見到一些變化,就能用很小的代價來應(yīng)對劇烈的變化。GOF總結(jié)的經(jīng)典設(shè)計(jì)模式雖只有23種,但不管是創(chuàng)建型模式、結(jié)構(gòu)型模式還是行為型模式,歸根結(jié)底都是在尋找軟件中可能的變化,并封裝這些變化。“料敵機(jī)先”為設(shè)計(jì)模式精髓之一,只不過這里的敵是需求的變化而已。
      
      預(yù)測到了變化,我們需要運(yùn)用抽象的手段對其進(jìn)行封裝,如何抽象、如何封裝需要具體問題具體分析,不能一概而論,從重構(gòu)到模式是目前使用設(shè)計(jì)模式最好的方式。對于設(shè)計(jì)模式如果不能夠做到靈活自如地運(yùn)用,不僅威力大減,甚至于弄巧成拙,“活學(xué)活用”為設(shè)計(jì)模式精髓之二。
      
      然而,僅僅學(xué)會了劍法永遠(yuǎn)也無法達(dá)到武功的最高境界,正如學(xué)會了設(shè)計(jì)模式也無法登上軟件設(shè)計(jì)領(lǐng)域之巔,要經(jīng)過大量的實(shí)戰(zhàn)才行,在實(shí)戰(zhàn)中提高劍法,在實(shí)戰(zhàn)中體會如何“料敵機(jī)先”,如何“活學(xué)活用”?!对O(shè)計(jì)模式——基于C#的工程化實(shí)現(xiàn)及擴(kuò)展》正是這樣一本教你進(jìn)行設(shè)計(jì)模式實(shí)戰(zhàn)的好書,作者從GOF 23種經(jīng)典設(shè)計(jì)模式開始,帶你走進(jìn)模式的大門,小到細(xì)粒度的基礎(chǔ)模式,大到粗粒度的架構(gòu)模式,本書都做了詳盡的講解。如果您還在為了軟件需求的無盡變化而煩惱不斷,為了在軟件設(shè)計(jì)領(lǐng)域更上一層樓而苦苦思索,希望本書能帶給您一些啟發(fā)。
      
      最后,特別感謝王翔為大家?guī)砹诉@樣一本設(shè)計(jì)模式的經(jīng)典之作。
      
      ——李會軍 (微軟MVP,博客園專家,IT168專欄作者)
      
      
  •     如果你要開發(fā)一個小型的系統(tǒng),整個系統(tǒng)只有兩三人,系統(tǒng)活不過五年,商業(yè)邏輯單純,程序代碼不超過萬行,那么你隨便做,影響不大。反之,若要架構(gòu)大型系統(tǒng),你需要慎思,套用模型與架構(gòu),將前人的經(jīng)驗(yàn)當(dāng)作基石,這樣系統(tǒng)設(shè)計(jì)才不至于陷入發(fā)散。
      然而,你不會一開始就做大系統(tǒng),那樣風(fēng)險太高。因此,要練習(xí),最好從小系統(tǒng)開始使用模型與架構(gòu),這樣才能檢討與學(xué)習(xí),日后方能在大系統(tǒng)中自如運(yùn)用。
      企業(yè)信息系統(tǒng)現(xiàn)今面臨著大量的整合需求,需要提供深入的分析應(yīng)用和靈活的應(yīng)變流程。但系統(tǒng)整合的復(fù)雜度是彼此系統(tǒng)復(fù)雜度的乘積,系統(tǒng)間的安全、彈性、效率、擴(kuò)充性、可用性……彼此互相掣肘,此時,企業(yè)需要接觸廣、想得深、能定方向的架構(gòu)師。而熟悉設(shè)計(jì)模式是架構(gòu)師的養(yǎng)成基礎(chǔ),要求對于問題的分類與解法有一定的認(rèn)知。
      有經(jīng)驗(yàn)的設(shè)計(jì)者們,抽象出系統(tǒng)開發(fā)的原則與標(biāo)準(zhǔn)問題的設(shè)計(jì)解法,而GOF于十幾年前提出的23種模式是其中的佼佼者。但畢竟空有概念,仍難落實(shí)到你日常使用的程序語言中來。坊間許多圖書作者利用不同的程序語言,例如C++、Visual Basic、.NET、Java等,實(shí)現(xiàn)GOF的23種模式,配合UML的模型說明,讓你可以方便地應(yīng)用在自己的開發(fā)環(huán)境中。
      本書的作者王翔有多年的開發(fā)經(jīng)驗(yàn),參與過多個千萬乃至十億行代碼的大工程,他將經(jīng)驗(yàn)融于設(shè)計(jì)模式中,以C#重新實(shí)現(xiàn)了GOF的模式,同時加入了新近的設(shè)計(jì)想法,如SOA與Web Services等,以及相對于其他設(shè)計(jì)模式而言較新的.NET Framework實(shí)現(xiàn)技術(shù),如泛型、3.0的WCF等。在本書中他除了正向地以C#展現(xiàn)多個不同用途的模式外,還提供了日后可重復(fù)驗(yàn)證與測試的單元測試碼。
      系統(tǒng)分析與設(shè)計(jì)是門藝術(shù),問題的解法與何為問題是交織的,而各模式的搭配使用技巧不同,要領(lǐng)存乎一心,須要巧思與反復(fù)琢磨,方可有好的解法。本書立意明確,除了告訴你問題的類型與解法,還提供了可以立即演繹的程序代碼。相信這本案頭的工具書可以提供你一個不錯的思維模式,幫你造就有彈性、能擴(kuò)充、易維護(hù)的軟件實(shí)體。
      須要提醒你的是,抽象化的思考、封裝與重用的設(shè)計(jì)神髓在心中,而不是落在紙上的程序代碼,閱讀此書時,不要停止在僅Copy and Paste程序代碼。
       胡百敬
      
  •   樓主大俠推薦,小弟自然去留意看看!
    嘿嘿
  •   相信你。
  •   "當(dāng)?shù)谝淮文玫奖緯鴷r,就被她深深的吸引:......"
  •   Terryli推薦,必看之
  •   在這見到大俠了,哈哈,從您的blog里學(xué)了不少東西,萬分感謝,這本書必看
  •   感覺像受人所托。。
  •   期待更詳細(xì)的書評?。?!
  •   “最厚的一本地鐵讀物”,我喜歡這一句!
  •   不錯!很好的一本書??!
    正在學(xué)習(xí)c#,不知道這本書適合初學(xué)者么?
  •   http://book.cnblogs.com/zt/DesignPatterns/
    可以去這里看看,這本書的專題。
  •   看了下內(nèi)容,不知道哪些是作者自己的東西....
  •   2009-02-17 11:48:15 Jasonluo  不錯!很好的一本書??!
      正在學(xué)習(xí)c#,不知道這本書適合初學(xué)者么?
    ---------------------------------------------------------
    這本書很明顯不適合初學(xué)者,我有了一定的C#和設(shè)計(jì)模式基礎(chǔ),也做過一些簡單小型的項(xiàng)目,看這本書也才剛好。不過好多東西也都是我以前從未深入用過的
  •   且看《笑傲江湖》中風(fēng)清揚(yáng)的獨(dú)孤九劍:有進(jìn)無退,招招都是進(jìn)攻,使攻敵不得不守。雖只一劍九式,卻是變化無窮,學(xué)到后來,前后式融會貫通,更是威力大增。能料到他要出甚么招,反招卻搶在他頭里。敵人手還沒提起,你長劍已指向他的要害,他再快也沒你快?!傲蠑硻C(jī)先”和“活學(xué)活用”這八個字,正是這套劍法的精要所在。
    設(shè)計(jì)模式可以當(dāng)做軟件開發(fā)中的獨(dú)孤九劍。在軟件設(shè)計(jì)中最大的敵人就是需求不斷在變化,需求變化無休無止,軟件交付日期也就無限期地延遲。我們無法做到以不變應(yīng)萬變,但如果能提前預(yù)見到一些變化,就能用很小的代價來應(yīng)對劇烈的變化。GOF總結(jié)的經(jīng)典設(shè)計(jì)模式雖只有23種,但不管是創(chuàng)建型模式、結(jié)構(gòu)型模式還是行為型模式,歸根結(jié)底都是在尋找軟件中可能的變化,并封裝這些變化。“料敵機(jī)先”為設(shè)計(jì)模式精髓之一,只不過這里的敵是需求的變化而已。
    預(yù)測到了變化,我們需要運(yùn)用抽象的手段對其進(jìn)行封裝,如何抽象、如何封裝需要具體問題具體分析,不能一概而論,從重構(gòu)到模式是目前使用設(shè)計(jì)模式最好的方式。對于設(shè)計(jì)模式如果不能夠做到靈活自如地運(yùn)用,不僅威力大減,甚至于弄巧成拙,“活學(xué)活用”為設(shè)計(jì)模式精髓之二。
    然而,僅僅學(xué)會了劍法永遠(yuǎn)也無法達(dá)到武功的最高境界,正如學(xué)會了設(shè)計(jì)模式也無法登上軟件設(shè)計(jì)領(lǐng)域之巔,要經(jīng)過大量的實(shí)戰(zhàn)才行,在實(shí)戰(zhàn)中提高劍法,在實(shí)戰(zhàn)中體會如何“料敵機(jī)先”,如何“活學(xué)活用”?!对O(shè)計(jì)模式——基于C#的工程化實(shí)現(xiàn)及擴(kuò)展》正是這樣一本教你進(jìn)行設(shè)計(jì)模式實(shí)戰(zhàn)的好書,作者從GOF 23種經(jīng)典設(shè)計(jì)模式開始,帶你走進(jìn)模式的大門,小到細(xì)粒度的基礎(chǔ)模式,大到粗粒度的架構(gòu)模式,本書都做了詳盡的講解。如果您還在為了軟件需求的無盡變化而煩惱不斷,為了在軟件設(shè)計(jì)領(lǐng)域更上一層樓而苦苦思索,希望本書能帶給您一些啟發(fā)。
    http://book.cnblogs.com/zt/DesignPatterns/
  •   狠了狠心,買了一本,的卻不錯
  •   小郭同學(xué),你的評價很實(shí)在?。?/li>
  •   呵呵,實(shí)事求是嘛
 

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

京ICP備13047387號-7