 |
-- 會員 / 註冊 --
|
|
|
|
設計模式—基於C#的工程化實現及擴展 ( 簡體 字) |
作者:王翔 | 類別:1. -> 程式設計 -> .NET -> C# |
譯者: |
出版社:電子工業出版社 | 3dWoo書號: 17150 詢問書籍請說出此書號!【缺書】 【不接受訂購】 |
出版日:12/1/2008 |
頁數:0 |
光碟數:0 |
|
站長推薦:  |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
【不接受訂購】 | ISBN:9787121075070 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:本書基于C# 2.0的語法,試圖將GOF 23中的模式以一種可工程化的公共庫而非Example的方式呈現給讀者。內容包括以下7部分。 第1篇主要是概括性的介紹;第2篇創建型模式介紹通過將實例化職責委托他方對象的辦法,隔離客戶程序與具體類型實例化的依賴關系,保證客戶程序(或者外部系統)獲得期望具體類型實例的、同時不必發生直接的引用;第3篇結構型模式的重點在于如何通過靈活的體系組織不同的對象,并在此基礎上完成更為復雜的類型(或者類型系統),而參與組合的各類型之間始終保持盡量松散的結構關系;第4篇行為型模式關注于應用運行過程中算法的提供和通信關系的梳理;第5篇主要介紹小顆粒度基礎模式和應用案例;第6篇主要介紹應用全局的模式化的實現方法,包括現在已經被普遍應用的N層模式及某些關鍵性框架產品采用的“微內核”模式;第7篇主要是一些針對Web和Web Service領域的模式設計技術。 本書主要針對對C#語言和.NET Framework平臺有一定了解或有一定應用經驗的用戶,尤其適于那些希望運用模式技術在設計和開發方面多應對些挑戰的用戶。 |
目錄:導讀 I 第1篇 預備知識——發掘用C#語言進行面向對象化設計的潛力 1 第1章 重新研讀C#語言 3 1.1 說明 4 1.2 C# 部分語法內容擴展 4 1.2.1 命名空間(Namespace) 4 1.2.2 簡潔的異步通知機制——委托(Delegate) 6 1.2.3 考驗你的算法抽象能力——泛型(Generics) 12 1.2.4 用作標簽的方式擴展對象特性——屬性(Attribute) 18 1.2.5 用索引器簡化的C#類型信息訪問 22 1.2.6 融入C#語言的迭代機制——迭代器(Iterator) 29 1.3 可重載運算符(Overloadable Operators)與轉換運算符(Conversion Operators) 35 1.3.1 The Day After Someday 35 1.3.2 用于有限的狀態迭代 35 1.3.3 操作集合 36 1.3.4 類型的適配 37 1.3.5 小結 38 1.4 面向插件架構和現場部署的配置系統設計 39 1.4.1 認識.NET Framework提供的主要配置實體類 40 1.4.2 應用實例 41 1.4.3 小結 48 1.5 實現依賴注入 48 1.5.1 背景介紹 48 1.5.2 示例情景 48 1.5.3 Constructor注入 51 1.5.4 Setter注入 51 1.5.5 接口注入 52 1.5.6 基于Attribute實現注入——Attributer 53 1.5.7 小結 55 第2章 開始每個設計模式之前 57 2.1 new()的替代品 59 2.2 準備一個輕量的內存Cache 61 2.3 準備一個集中訪問配置文件的Broker 64 2.4 Web?Not Web? 67 2.5 小結 71 第2篇 創建型模式——管理并隔離對象實例的構造過程 73 第3章 工廠&工廠方法模式 75 3.1 簡單工廠 76 3.1.1 最簡單的工廠類 76 3.1.2 根據規格加工產品——參數化工廠 79 3.1.3 簡單工廠的局限性 80 3.2 經典回顧 80 3.3 解耦Concrete Factory與客戶程序 82 3.4 基于配置文件的Factory 83 3.5 批量工廠 85 3.5.1 開發情景 85 3.5.2 定義產品類型容器 87 3.5.3 定義批量工廠和產品類型容器 88 3.5.4 增設生產指導顧問——Director 89 3.5.5 由Director指導的客戶程序 90 3.6 基于類型參數的Generic Factory 91 3.7 委托工廠類型 94 3.8 小結 95 第4章 單件模式 97 4.1 經典回顧 99 4.2 線程安全的Singleton 102 4.3 細節決定成敗 103 4.4 細顆粒度Singleton 105 4.4.1 背景討論 105 4.4.2 解決桌面應用中細顆粒度Singleton問題 105 4.4.3 解決Web應用中細顆粒度Singleton問題 107 4.4.4 更通用的細顆粒度Singleton 108 4.5 自動更新的Singleton 110 4.6 參數化的Singleton 110 4.7 跨進程的Singleton 112 4.8 Singleton的擴展——Singleton-N 114 4.8.1 定義具有執行狀態的抽象對象 115 4.8.2 定義相應的Singleton-N實例集合 115 4.8.3 在基本Singleton模式實現的框架下引入實例集合 116 4.9 引入配置文件管理Singleton 117 4.10 基于類型參數的Generic Singleton 118 4.11 由工廠類型協助Singleton實例管理 119 4.12 小結 120 第5章 抽象工廠模式 121 5.1 經典回顧 122 5.2 按計劃實施生產 125 5.2.1 為抽象工廠補充類型映射器 125 5.2.2 處理模式的硬傷 127 5.3 定義計劃與生產間的映射關系 128 5.3.1 分析 128 5.3.2 登記映射關系 129 5.3.3 用TypeMapper協助工廠生產 129 5.3.4 定義實體TypeMapper和實體工廠 130 5.3.5 實現裝配機制 130 5.4 配置生產計劃 131 5.5 基于Delegate的生產外包 134 5.6 小結 136 第6章 創建者模式 139 6.1 經典回顧 141 6.2 異步調用的BuildUp() 143 6.3 為Builder打個標簽 146 6.3.1 完成工具類 146 6.4 具有裝配/卸裁能力的Builder 150 6.5 看著圖紙加工——登記配置文件 152 6.5.1 把UML的對象變成XSD 152 6.5.2 把握梗概——刪除不經常變化的內容 154 6.5.3 映射為配置節點或配置元素 155 6.5.4 實現實體對象 155 6.5.5 完成流水線生產 158 6.6 用迭代器控制流水線 159 6.7 小結 161 第7章 原型模式 163 7.1 經典回顧 164 7.2 表面模仿還是深入模仿 168 7.2.1 概念 168 7.2.2 制作實現克隆的工具類型 169 7.2.3 克隆也要稍微保留點個性 171 7.2.4 定制并管理的克隆過程 172 7.3 重新定義原型方法 173 7.4 同時支持XML和二進制序列化的泛型集合類型處理 174 7.5 小結 179 第3篇 結構型模式——針對變化組織靈活的對象體系 181 第8章 適配器模式 183 8.1 說明 184 8.2 經典回顧 185 8.3 進一步擴展適配范圍的組適配器 187 8.4 Adapter——Adapter互聯模式 190 8.4.1 分析 190 8.4.2 方式1:客戶程序直接調度Adapter 192 8.4.3 方式2:基于標準約定調度Adapter 192 8.4.4 方式3:借助反射和約定完成異步調用 193 8.5 用配置約定適配過程 194 8.6 XML數據的專用適配機制 196 8.7 小結 198 第9章 橋模式 199 9.1 說明 200 9.2 經典回顧 201 9.3 將復雜性進一步分解后的多級橋關系 204 9.4 看著“圖紙”造橋 207 9.5 具有約束關系的橋 209 9.6 小結 211 第10章 組合模式 213 10.1 說明 214 10.2 經典回顧 215 10.3 用迭代器遍歷組合類型 218 10.4 適于XML信息的組合模式 220 10.5 小結 223 第11章 裝飾模式 225 11.1 說明 226 11.2 經典回顧 226 11.3 具有自我更新特征的裝飾模式 230 11.3.1 分析 230 11.3.2 抽象裝飾接口 231 11.3.3 抽象狀態接口 232 11.3.4 依據當前狀態修改裝飾 233 11.3.5 測試驗證 233 11.4 設計Decorator與Builder協作的產物 234 11.5 把Decorator做成標簽 236 11.5.1 更“徹底”的Attribute注入 236 11.5.2 方式1:采用.NET平臺自帶的AOP機制實現 237 11.5.3 方式2:自定義代理攔截框架方式 239 11.5.4 進一步分析 242 11.6 小結 243 第12章 外觀模式 245 12.1 說明 246 12.2 經典回顧 246 12.3 Facade接口 249 12.4 Remote Facade 250 12.5 面向性能考慮的升級版Remote Facade——Data Transfer Object模式 253 12.6 平臺、開發語言無關的抽象Facade接口——WSDL 256 12.7 讓使用者更加方便的Fluent Interface設計 257 12.8 小結 258 第13章 享元模式 259 13.1 說明 260 13.2 經典回顧 261 13.3 制訂共享計劃 263 13.4 綜合性的共享體系——Object Pool 264 13.4.1 應用背景 264 13.4.2 總體技術結構 264 13.4.3 抽象類型實體設計 265 13.4.4 享元模式的典型應用——緩沖 266 13.4.5 示例 266 13.5 用于并行處理的線程級享元 269 13.6 通過Delegate和隊列實現異步Flyweight 270 13.7 小結 271 第14章 代理模式 273 14.1 說明 274 14.2 經典回顧 274 14.3 遠程訪問代理 276 14.3.1 第1步:定義遠程訪問的服務協議 277 14.3.2 第2步:定義服務端的配置文件及相應的宿主程序 277 14.3.3 第3步:生成客戶端遠程代理(Proxy)類型 278 14.3.4 第4步:編寫客戶端程序 279 14.4 數據訪問代理 279 14.5 對象緩存代理 282 14.6 為代理過程增加預處理和后續處理的支持 284 14.6.1 第1步:定義外部處理機制的抽象結構 285 14.6.2 第2步:定義新增處理的配置信息 286 14.6.3 第3步:定義配置解析對象 286 14.6.4 第4步:修正服務端和代理類的處理過程 287 14.7 小結 288 第4篇 行為型模式——算法、控制流和通信關系的對象化處理 289 第15章 職責鏈模式 291 15.1 說明 292 15.2 經典回顧 292 15.3 用斷點控制鏈式過程 295 15.4 鏈式反應 298 15.5 增加配置約束 300 15.6 小結 303 第16章 模板方法模式 305 16.1 說明 306 16.2 經典回顧 306 16.3 滿足多套模板要求 308 16.4 方法的模板——Delegate 311 16.5 類型的模板——Generic 312 16.6 用配置勾勒的模板 313 16.7 小結 314 第17章 解釋器模式 315 17.1 說明 316 17.2 經典回顧 317 17.3 采用正則表達式 320 17.4 采用字典 324 17.5 采用XSD 328 17.6 用XSD解釋定制的業務語言 329 17.7 小結 330 第18章 命令模式 331 18.1 說明 332 18.2 經典回顧 333 18.3 輕量級的Command——委托 336 18.4 異步Command 337 18.5 把Command打包 341 18.5.1 外觀模式方式 342 18.5.2 組合模式方式 343 18.6 把Command排隊 345 18.7 小結 347 第19章 迭代器模式 349 19.1 說明 350 19.2 經典回顧 351 19.3 C#化的Iterator 353 19.4 小結 354 第20章 中介者模式 355 20.1 說明 356 20.2 經典回顧 358 20.3 基于Delegate和事件的松耦合Mediator 362 20.4 根據配置動態協調通知關系 365 20.5 SOAP Mediator 366 20.6 小結 367 第21章 備忘錄模式 369 21.1 說明 370 21.2 經典回顧 371 21.3 把備忘壓棧 376 21.4 Memento的序列化和持久化 378 21.5 小結 381 第22章 觀察者模式 383 22.1 說明 384 22.2 經典回顧 386 22.3 .NET內置的Observer機制——事件 391 22.4 具有Observer的集合類型 392 22.5 面向服務接口的Observer 394 22.6 小結 397 第23章 狀態模式 399 23.1 說明 400 23.2 經典回顧 401 23.3 State的序列化和持久化 405 23.4 主動方式State 407 23.5 觸發式State 408 23.6 涉及用戶交互的狀態流轉 410 23.7 用WF完成更易于編排的State 410 23.8 小結 412 第24章 策略模式 413 24.1 說明 414 24.2 經典回顧 415 24.3 Strategy與Interpreter協作 417 24.4 充分利用.NET Framework自帶的Strategy接口 418 24.5 動態策略 421 24.6 小結 422 第25章 訪問者模式 423 25.1 說明 424 25.2 經典回顧 424 25.3 借助反射實現Visitor 428 25.4 用委托使引用關系更加松散 430 25.5 小結 430 第5篇 小顆粒度基礎模式和應用案例——服務于細節的基礎性模式 431 第26章 成例 433 26.1 說明 434 26.2 Partial Class 434 26.2.1 體現組合關系 434 26.2.2 從多個側面刻畫類型 435 26.2.3 與Visual Studio Add-ins的結合 436 26.2.4 小結 437 26.3 Gateway 437 26.3.1 封裝本地API的Gateway 438 26.3.2 封裝非C#語言訪問接口 440 26.3.3 封裝通用操作方法 440 26.3.4 小結 443 26.4 Mapper 443 26.4.1 介紹 443 26.4.2 數據對象映射器 445 26.4.3 小結 450 26.5 Registry 451 26.6 Value Object 455 26.7 通用數據載體DataSet和DataTable 457 26.8 Context 458 第27章 GOF總結及應用案例 461 27.1 GOF總結 462 27.1.1 回顧GOF 462 27.2 應用案例需求說明 462 27.3 發現和分析 463 27.4 模式應用 466 27.4.1 已經采用的模式 466 27.4.2 如何實現與具體數據源無關 466 27.4.3 提供執行前后定制處理的能力 476 27.4.4 設計一個結構更加靈活的連接串配置訪問機制 477 27.5 小結 482 第6篇 部分架構模式——面向應用全局的模式化處理 483 第28章 MVC模式 485 28.1 說明 486 28.2 模式介紹 487 28.3 示例 489 28.3.1 混合方式 489 28.3.2 分解對象職責 490 28.3.3 主動方式M/V/C 492 28.4 小結 495 第29章 管道—過濾器模式 497 29.1 說明 498 29.2 登機的管道流程 499 29.2.1 數據源發起的推方式 500 29.2.2 數據接收方發起的拉方式 501 29.2.3 中介對象發起的推拉混合方式 502 29.2.4 數據源/數據接收方分別發起的銜接方式 503 29.3 示例 504 29.3.1 推方式示例 504 29.3.2 增加主動方式的Filter 508 29.4 小結 509 第30章 出版—預訂模式 511 30.1 說明 512 30.2 生活中無處不在的“預訂” 512 30.2.1 面向單一主題的本地觀察者模式 512 30.2.2 增加Proxy實現面向單一主題的分布式觀察者模式 513 30.2.3 用出版者集中管理預訂 514 30.2.4 面向物理環境設計更多出版預訂模式 517 30.3 示例 518 30.3.1 數據實體模型部分 518 30.3.2 業務實體模型部分 521 30.3.3 具體實體對象部分 523 30.3.4 單元測試 527 30.4 小結 528 第31章 Broker模式 531 31.1 說明 532 31.2 越來越龐雜的分布式系統交互之感 533 31.3 示例 536 31.4 小結 539 第32章 消息總線模式 541 32.1 說明 542 32.2 用總線梳理企業系統環境 544 32.2.1 分隔區域條件下的消息總線 547 32.3 小結 547 第7篇 部分Web和Web Service模式——面向服務開發中的模式化處理 549 第33章 頁面控制器模式 551 33.1 說明 552 33.2 用對象化思維抽象和擴展頁面操作邏輯 553 33.3 示例 554 33.4 小結 555 第34章 實現Web服務依賴倒置 557 34.1 Web Service的模式化特征 558 34.2 第一層的包裝 559 34.2.1 Aggregation 560 34.2.2 Contain 561 34.3 SOA環境下典型的Web Service開發方式 561 34.4 依賴倒置原則及其在Web Service中的應用 562 34.4.1 分析 564 34.4.2 實現示例 565 34.5 基于WCF的工程化實現 571 34.5.1 實現示例 571 34.5.2 借助WCF擴展服務的對象化特征 574 34.6 小結 576 第35章 Web服務適配器模式 577 35.1 說明 578 35.2 Web Service下的接口適配問題 578 35.2.1 常規情景分析 578 35.2.2 Web Service間連續交互適配 579 35.2.3 實施方式 580 35.3 采用標準Web Service類型的示例 581 35.3.1 單純數據XSD適配 581 35.3.2 服務方法兼容性適配 586 35.3.3 其他說明 588 35.4 采用WCF的示例 588 35.4.1 用Data Contract定義數據Schema 589 35.4.2 定義不同的類型轉換方式示例 590 35.5 小結 592 第36章 Web服務數據傳輸對象模式 593 36.1 說明 594 36.2 Web Service接口批量交互中的性能問題 595 36.2.1 DTO對象 595 36.2.2 DTO與消費者服務的對應關系 595 36.2.3 部署設計考慮 597 36.2.4 結構 597 36.3 示例 598 36.3.1 沒有DTO對象的情況 599 36.3.2 增加DTO對象的情況 601 36.4 小結 602 36.5 附件 603 36.5.1 實現DTO數據裝載的兩種方式 603 第37章 Web服務事件監控器模式 605 37.1 說明 606 37.2 如何為普通Web Service封裝事件機制 607 37.3 示例 609 37.4 小結 613 第38章 Web服務攔截過濾器模式 615 38.1 說明 616 38.2 通過攔截完成自定義特性的透明擴展 617 38.2.1 實現方式 617 38.2.2 .NET平臺的實現技術 620 38.3 示例 621 38.3.1 基于ASP.NET Web Service的IHttpModule方式 621 38.3.2 基于WCF自定義攔截方式 623 38.4 小結 626 附錄A 面向關系數據和XML數據的領域邏輯模式 627 A.1 說明 628 A.2 實現業務領域邏輯的主要方法 628 A.2.1 整體邏輯結構 628 A.2.2 性能改進 629 A.2.3 面向關系數據庫的業務服務設計 630 A.2.4 面向XML數據的擴展設計 630 A.2.5 配置機制設計 631 A.3 示例 632 A.3.1 示例情景 632 A.3.2 測試內容準備 633 A.3.3 實際測試過程 634 A.4 小結 635 附錄B 基于XML的應用建模 637 B.1 說明 638 B.2 世界是平的,但更是多元的 638 B.2.1 更具擴展性的數據模型——XML 638 B.2.2 讓非結構化數據可以被識別 642 B.2.3 應對數據和內容的集成 644 B.2.4 新的應用擴展 647 B.2.5 應對語義網絡的復雜性 649 B.3 小結 650 索引 651 |
序: |
|