《設計模式——基於C#的工程化實現》想做到的

來源:互聯網
上載者:User

設計模式是套思想,不過我是一名從事編碼的人員,有時候還經常覺得如何更巧的結合應用功能完成實現也要多多斟酌。

在我師傅、同事領導的協助下,這幾年做了一些.NET的項目,我酷愛C#語言,所以使用中發現C#實現一些設計模式的時候還有很多特色的內容,

因此,在博文周老師、陳編輯以及很多QQ群裡朋友的支援下,我覺得可以把以前的一些心得總結出來,所以萌生了寫本書的想法。

 

雖然這本書很多模式的擴充都很有限,但我希望可以做為一個引子,能夠與喜歡 模式 & C#語言 的朋友有個討論的基礎,希望可以不斷完善這部分內容。

 

設計模式——基於C#的工程化實現及擴充
第四版目錄

第一篇:準備內容    1
發掘C#語言物件導向化設計的潛力    1
第2章  重新研讀C#語言
2.1  C# 部分文法內容擴充
2.1.1命名空間(Namespace)
2.1.1.1  尷尬的現實狀況2                                          
2.1.1.2 企業.NET類型系統的命名空間規劃樣本3
2.1.1.3 小結    4
2.1.2   簡潔的非同步通知機制——委託  4
2.1.2.1 用Delegate完成非同步呼叫    4
2. 1.2.2 1對n的通知    5
2. 1.2.3 調用匿名方法    7
2. 1.2.4 調用重載方法    8
2. 1.2.5 小結    10
2.1.3  考驗你的演算法抽象能力 ——泛型 10  
2. 1.3.1 抽象   抽象能力支援10
2. 1.3.2 應用於模式    11
2. 1.3.3容器    14
2. 1.3.4型別參數約束    14
2. 1.3.5 小結    16
2.1.4  用作標籤的方式擴充項物件特性——屬性 (Attribute)16
2. 1.4.1 用Attribute指導模式    16
2. 1.4.2 進一步方便客戶程式調用    19
2. 1.4.3 小結    20
2.1.5   用索引器簡化的C#類型資訊訪問 20    
2. 1.5.1 服務於集合    20
2. 1.5.2 封裝單列集合的訪問    21
2. 1.5.3 多列的集合    23
2. 1.5.4實作類別似RDBMS中聯合主鍵或唯一性索引的訪問    24
2. 1.5.5通過委託傳遞索引規則    24
2. 1.5.6 小結    25
2.1.6  融入C#語言的迭代機制——迭代器 25
2. 1.6.1 基本應用    26
2. 1.6.2 簡化複雜結構的遍曆    27
2. 1.6.3 小結    31
2.2  可重載運算子(Overloadable Operators)與轉換運算子(Conversion Operators)    32
2.2.1 The Day After Someday    32
2.2.2 用於有限的狀態迭代    33
2.2.3 操作集合    33
2.2.4類型的適配    35
2.2.5小結    36
2.3   面向外掛程式架構和現場部署的配置系統設計
2.3.1 認識.Net Framework提供的主要配置實體類    37
2.3.2 應用執行個體    38
2.3.3小結    46
2.4  實現依賴注入    46
2.4.1 背景介紹    46
2.4.2 樣本情景    47
2.4.3 Constructor注入    49
2.4.4 Setter注入    50
2.4.5 介面注入    51
2.4.6 基於Attribute實現注入——Attributer    52
2.4.7 小結    53
第3章   開始每個設計模式之前
3.1  new()的替代品    55
3.2  準備一個輕量的記憶體Cache    57
3.3  準備一個集中訪問設定檔的Broker    60
3.4  Web? Not Web?    63
3.5  小結    75

第二篇:建立型模式    76

第4章   工廠 & Factory 方法模式(Factory & Factory Method)
4.1  簡單工廠:    77
4.1.1 最簡單的工廠類    77
4.1.2根據規格加工產品——參數化工廠81
4.1.3 簡單工廠的局限性    81
4.2    經典回顧 81
4.3  解耦Concrete Factory與客戶程式    83
4.4  基於設定檔的Factory    84
4.5 批量工廠 87    
4.5.1 開發情景    87
4.5.2定義產品類型容器    88
4.5.3 定義批量工廠和產品類型容器    89
4.5.4增設生產指導顧問——Director 90
4.5.5由Director指導的客戶程式    91
4.6  基於型別參數的Generic Factory    93
4.7  委託工廠類型Delegate Factory    95
4.8  小結    96
第5章  單件模式(Singleton)
5.1 經典回顧99
5.2 安全執行緒的Singleton    102
5.3  細節決定成敗 104
5.4 細顆粒度Singleton    105
5.4.1背景討論    105
5.4.2解決案頭應用中細顆粒度Singleton問題    105
5.4.3解決web應用中細顆粒度Singleton問題    107
5.4.4更通用的細顆粒度Singleton    109
5.5 自動更新的Singleton    120
5.6 參數化的Singleton    121
5.7 跨進程的Singleton    126
5.8  Singleton的擴充——Singleton-N    127
5.8.1定義具有執行狀態的抽象對象    128
5.8.2定義相應的Singleton-N執行個體集合    129
5.8.3在基本Singleton模式實現的架構下引入執行個體集合    130
5.9  引入設定檔管理Singleton 131
5.10 基於型別參數的Generic Singleton    132
5.11 由工廠類型協助Singleton執行個體管理141
5.12 小結    141
第6章  抽象原廠模式(Abstract Factory)
6.1經典回顧 143
6.2 按計劃實施生產 146
6.2.1 為抽象工廠補充類型映射器 146
6.2.2 處理模式的硬傷 147
6.3 定義計劃與生產間的映射關係 148
6.3.1 分析 148
6.3.2 登記映射關係
6.3.3 用TypeMapper協助工廠生產 150
6.3.4 定義實體TypeMapper和實體工廠 151
6.3.5 實現裝配機制 151
6.4 配置生產計劃 152
6.5 基於Delegate的生產外包 155
6.6小結 157
第7章 建立者模式 (Builder)
7.1經典回顧 160
7.2 非同步呼叫的BuildUp() 162
7.3 為Builder打個標籤 165

7.3.1完成工具類 165
7.3.2 定義標籤 166
7.3.3 學會看標籤 167
7.4 具有 裝配/卸載 能力的Builder 169
7.5 看著圖紙做加工——登記設定檔 171

7.5.1 把UML的對象變成XSD 173
7.5.2 把握梗概——刪除不經常變化的內容 173
7.5.3映射為配置節或配置元素  174                 
7.5.4 實現實體物件 175
7.5.5完成流水線生產 179
7.6 用迭代器控制流程水線 180
7.7小結 182
7.7.1基於型別參數的Generic Builder183
7.7.2分析 183
7.7.3流程最佳化重組 184
第8章  原型模式(Prototype)
8.1經典回顧 186
8.2表面模仿還是深入模仿 190    
8.2.1 概念 190
8.2.2 製作實現複製的工具類型
8.2.3複製也要稍微保留點個性 193
8.2.4 定製並管理的複製過程 194
8.3重新定義原型方法    196
8.4 同時支援XML和二進位序列化的泛型集合類型處理
8.5小結

第三篇:結構型模式    198

第9章  適配器模式(Adapter)
9.1經典回顧199
9.2   進一步擴充適配範圍的組適配器202
9.3 Adapter——Adapter互聯模式   205
9.3.1分析    205
9.3.2方式1:客戶程式調度Adapter    207
9.3.3方式2:  基於標準約定調度Adapter207
9.3.4方式3:  藉助反射和約定完成非同步呼叫 208
9.4  用配置約定適配過程 209
9.5   XML資料的專用適配機制 210
9.6小結    212
第10章 橋模式(Bridge)
10.1 經典回顧 215
10.2  將複雜性進一步分解後的多級橋關係218
10.3  看著“圖紙”造橋221
10.4  具有約束關係的橋 223
10.5小結    225
第11章 組合模式(Composite)
11.1 經典回顧228
11.2用迭代器遍曆組合類別型    232
11.3   適於XML資訊的組合模式234
11.4小結    237
第12章 裝飾模式(Decorator)
12.1經典回顧
12.2具有自我更新特徵的裝飾模式
12.2.1分析 243
12.2.2抽象裝飾介面
12.2.3抽象狀態介面
12.2.4依據目前狀態修改裝飾
12.2.5測實驗證
12.3設計Decorator與Builder協作的產物 248
12.4把Decorator做成標籤
12.4.1 更“徹底”的Attribute注入
12.4.2方式1:採用.NET平台內建的AOP機制實現 251
12.4.3方式2:自訂代理攔截架構方式 254
12.4.4進一步分析 257
12.5小結 257
第13章 面板模式(Façade)
13.1.經典回顧
13.2 Façade介面 262
13.3 Remote Façade 263
13.4面向效能考慮的升級版Remote Façade——Data Transfer Object模式 266
13.5平台、開發語言無關的抽象Façade介面——WSDL 270
13.6 讓使用者更方便的Fluent Interface設計 270
13.7小結 272
第14章 享元模式(Flyweight)
14.1 經典回顧
14.2 制訂共用計劃
14.3 綜合性的共用體系——Object Pool 278
14.3.1 應用背景 279
14.3.2 總體技術結構 279
14.3.3 抽象類別型類型實體設計 280
14.3.4 享元模式的典型應用——緩衝 280         不改
14.3.5 樣本 281
14.4 用於平行處理的線程級享元
14.5 通過Delegate和隊列實現非同步Flyweight 285
14.6 小結 286
第15章  代理模式(Proxy)
15.1經典回顧    288
15.2遠端存取代理    290
15.2.1第一步 定義遠端存取的服務合約    291
15.2.2第二步 定義服務端的設定檔及相應的宿主程式    291
15.2.3第三步 產生用戶端遠程代理(Proxy)類型    
15.2.4第四步 編寫用戶端程式    293
15.3資料訪問代理    294
15.4對象緩衝代理    296
15.5為代理過程增加預先處理和後續處理的支援
15.5.1第一步、定義外部處理機制的抽象結構    299
15.5.2第二步、定義新增處理的配置資訊    300
15.5.3第三步、定義配置解析對象    301
15.5.4第四步、修正服務端和代理類的處理過程    302
15.6小結    302

第四篇:行為型模式    301

第16章 職責鏈模式(Chain of Responsibility)
16.1.經典回顧
16.2 用斷點控制鏈式過程
16.3 鏈式反應
16.4 增加配置約束
16.5 小結 316
第17章 模版方法模式(Template Method)
17.1經典回顧
17.2滿足多套模版要求
17.3方法的模版——Delegate
17.4類型的模版——Generic
17.5 用配置勾勒的模版
17.6小結 327
第18章  解譯器模式(Interpreter)
18.1經典回顧
18.2採用Regex
18.3採用字典
18.4 採用XSD
18.5用XSD解釋訂製的業務語言
18.6小結
第19章 命令模式(Command)
19.1經典回顧
19.2輕量級的Command——委託     
19.3非同步Command
19.4 把Command打包
19.4.1 面板模式方式
19.4.2組合模式方式
19.5 把Command排隊
19.6小結 362
第20章  迭代器模式(Iterator)
20.1經典回顧    365
20.2 C#化的Iterator    367
20.3小結    369
第21章  中介者模式(Mediator)
21.1經典回顧    373
21.2基於Delegate和事件的松耦合Mediator 378
21.3根據配置動態協調通知關係
21.4SOAP Mediator
21.5小結 383
第22章 備忘錄模式(Memento)
22.1經典回顧
22.2 把備忘壓棧
22.3 Memento的序列化和持久化 394
22.4小結 397
第23章  觀察者模式(Observer)
23.1經典回顧    402
23.2 NET內建的Observer機制——事件    406
23.3具有Observer的集合類型    408
23.4面向服務介面的Observer    410
23.5小結    413
第24章 狀態模式(State)
24.1經典回顧    416
24.2 State的序列化和持久化    420
24.3主動方式State    423
24.4觸發式State     423
24.5涉及使用者互動的狀態流轉    426
24.6用WF完成更易於編排的State    426
24.7小結    428
第25章 策略模式(Strategy)
25.1經典回顧
25.2 Strategy與Interpreter協作 433
25.3充分利用.NET Framework內建的Strategy介面 434
25.4 動態策略
25.5小結 438
第26章 訪問者模式(Visitor)
26.1經典回顧
26.2藉助反射實現Visitor 445
26.3用委託使參考關聯性更加鬆散
26.4小結 447

第五篇:小顆粒度基礎模式和應用案例    448

第27章 成例(Idioms)
27.1 Partial Class 449
27.1.1 體現組合關係
27.1.2 從多個側面刻畫類型
27.1.3與Visual Studio Add-ins的結合 452
27.1.4小結 452
27.2 Gateway 452
27.2.1封裝本地API的Gateway 453
27.2.2 封裝非C#語言提供者 455
27.2.3 封裝通用操作方法 455
27.2.4小結 458
27.3 Mapper 458
27.3.1介紹 458
27.3.2 資料對象映射器
27.3.3小結 466
27.4 Registry 467
27.4.1小結 471
27.5 Value Object 471
27.6通用資料載體DataSet和DataTable 473
27.7 Context 474
第28章GOF總結以及應用案例(Show Case)
28.1 GOF總結    476
28.1.1回顧GOF    476
28.2應用案例需求說明    476
28.3發現和分析    477
28.4模式應用    480
28.4.1已經採用的模式    480
28.4.2如何?具體資料來源無關    480
28.4.3提供執行前後定製處理的能力    492
28.4.4設計一個結構更加靈活的串連串配置訪問機制    494
28.5小結    500

第六篇:部分架構模式    501

第29章MVC模式(MVC)
29.1模式介紹 502
29.2樣本 504
29.2.1 混合方式
29.2.2分解對象職責
29.2.3主動方式M/V/C 509
29.3小結 512
第30章  管道——過濾器模式(Pipeline-Filter)
30.1 登機的管道流程    515
30.1.1 資料來源發起的推方式
30.1.2 資料接收方發起的拉方式
30.1.3 中介對象發起的推拉混合方式 518
30.1.4 資料來源/資料接收方分別發起的銜接方式 519
30.2樣本    520
30.2.1推方式樣本    520
30.2.2增加主動方式的Filter    525
30.3小結    527
第31章 出版—預定模式(Pub-Sub)
31.1生活中無處不在的“預定”   529
31.1.1面向單一主題的本地觀察者模式    530
31.1.2增加Proxy實現面向單一主題的分布式觀察者模式    530
31.1.3用出版者集中管理預定    531
31.1.4面向實體環境設計更多出版預定模式    534
31.2樣本    535
31.2.1資料實體模型部分    536
31.2.2業務實體模型部分    539
31.2.3具體實體物件部分    542
31.2.4單元測試    546
31.3小結    548
第32章Broker模式(Broker)
32.1越來越龐雜的分布式系統互動之惑    551
32.2樣本    554
32.3小結    557
第33章 訊息匯流排模式(Message Bus)
33.1用匯流排梳理企業系統內容   561
33.1.1分隔地區條件下的訊息匯流排    563
33.2小結    564

第七篇:部分Web和Web Service模式    565

第34章 頁面控制器模式(Page Controller)
34.1 用對象化思維抽象和擴充頁面操作邏輯
34.2樣本    567
34.3小結    567
第35章 實現Web服務依賴倒置
35.1  Web Service的模式化特徵:    569
35.2 第一層的封裝    570
35.3  SOA環境下典型的Web Service開發方式:    573
35.4依賴倒置原則及其Web Service中的應用    573
35.4.1分析    575
35.4.2實現樣本    576
35.5 基於WCF的工程化實現    583
35.5.1實現樣本    583
35.5.2藉助WCF擴充服務的對象化特徵    587
35.6 小結    588
第36章Web服務適配器模式(Web Service Adapter)
36.1Web Service下的介面適配問題  560
36.1.1常規情景分析    560
36.1.2Web Service間連續互動適配    560
36.1.3實施方式    562
36.2採用標準Web Service類型的樣本    563
36.2.1單純資料XSD適配:    563
36.2.2服務方法相容性適配:    569
36.2.3其它說明:    571
36.3採用WCF的樣本    572
36.3.1用Data Contract定義資料Schema    573
36.3.2定義不同的類型轉換方式樣本    574
36.4小結    576
第37章Web服務資料轉送對象模式(Web Service DTO)
37.1Web Service介面批量互動中的效能問題    579
37.1.1 DTO對象    579
37.1.2 DTO與消費者服務的對應關係    579
37.1.3部署設計考慮    581
37.1.4結構    581
37.2樣本    582
37.2.1沒有DTO對象的情況    583
37.2.2增加DTO對象的情況    585
37.3小結    587
37.4附件:    587
37.4.1實現DTO資料裝載的2種方式    587
第38章Web服務事件監控器模式(Web Service Event Monitor)
38.1如何為普通Web Service封裝事件機制   590
38.2樣本    591
38.3小結    596
第39章Web服務攔截過濾器模式(Web Service Intercepting Filter)
39.1通過攔截完成自訂特性的透明擴充    599
39.1.1實現方式    599
39.1.2.NET平台的實現技術    602
39.2樣本    604
39.2.1基於ASP.NET Web Service的IHttpModule方式    604
39.2.2基於WCF自訂攔截方式    606
39.3小結    610
第40章  面向關係資料和XML資料的領域邏輯模式(Domain Logic Pattern)
40.1實現業務領域邏輯的主要方法    612
40.1.1整體邏輯結構    612
40.1.2效能改進    613
40.1.3面向關聯式資料庫的商務服務設計    614
40.1.4面向XML資料的擴充設計    615
40.1.5配置機制設計    615
40.2樣本    616
40.2.1樣本情景    616
40.2.2測試內容準備    617
40.2.3實際測試過程    618
40.3小結    619
第41章 基於XML的應用建模(XML Based Application Model)
41.1世界是平的,但更是多元的    621
41.1.1更具擴充性的資料模型——XML    621
41.1.2讓非結構化資料可以被識別    626
41.1.3應對資料和內容的整合    628
41.1.4新的應用擴充:    630
41.1.5應對語義網路的複雜性    633
41.2小結    634

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.