C#设计模式迷你手册
来源:互联网 发布:网络建站远程教育 编辑:程序博客网 时间:2024/05/02 00:23
C#设计模式迷你手册
<script type="text/javascript"><!--google_ad_client = "pub-9043283529440151";google_ad_width = 468;google_ad_height = 60;google_ad_format = "468x60_as";google_ad_type = "image";//2007-05-19: Designgoogle_ad_channel = "2387479448";google_color_border = "FFFFFF";google_color_bg = "FFFFFF";google_color_link = "3F6F08";google_color_text = "000000";google_color_url = "008000";//--></script><script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type="text/javascript"></script>
写在前面的话
一、 设计模式的隐喻
武功套路是习武的门径。新手要一招一式地练习套路,烂熟于心之后,熟能生巧,在实战之中即可见招拆招、运用自如——此时习武之人已从“新手”成长为“好手”。“高手”则没有套路,实战之中只有自然反应,然而一招一式浑然天成、恰到好处,似有似无、无中生有。“高手”之上还有“高高手”,他们达到的境界非我等凭借金氏武侠小说可以揣测。
设计模式之于设计,好比套路之于武术。“新手”要一个接一个地学习模式,“好手”能够活用模式,“高手”则没有模式。
设计模式的“内功”是面向对象的基本原则。这些原则是“神”,模式是“形”。高手拼的是“内功”,对面向对象基本原则有了深刻的领悟,才能用好设计模式,避免“走火入魔”。
一般在设计模式著作的前几章都会介绍面向对象的基本原则,这几章非常重要。学通了这几章,后面的模式就不过如此了。学完了设计模式,也最好翻过头来重新看看这几章,保证会有新的领悟。
二、 为什么使用设计模式
对任何设计都可以凭主观(对设计很难做出客观评价)判断得出它是一个好的设计,还是一个坏的设计。使用设计模式是为了避免坏的设计。Martin叔叔在他的著作《敏捷软件开发 原则、模式与实践》中描述了拙劣设计的症状:
- 僵化性(Rigidity):设计难以改变。
- 脆弱性(Fragility):设计易于遭到破坏。
- 牢固性(Immobility):设计难以重用。
- 粘滞性(Viscosity):难以做正确的事情。
- 不必要的复杂性(Needless Complexity):过分设计。
- 不必要的重复(Needless Repetition):过多的重复。
- 晦涩性(Opacity):混乱的表达。
三、 什么时候使用设计模式
Martin叔叔的书中有段话:
在学习它们(设计原则和模式)的时候,请记住,敏捷开发人员不会对一个庞大的预先设计应用那些原则和模式。相反,这些原则和模式被应用在一次次的迭代中,力图使代码以及代码所表达的设计保持干净。
- 在这段容易被读者忽略的文字中,我体会到这样几层含义:
- 代码是设计(这是Martin叔叔强调的一个观点,这个观点可以参考《敏捷软件开发 原则、模式与实践》一书的附录D);
- 设计模式是为了使设计适应变化;
- 设计模式是重构的工具;
- 设计一开始就要保持干净、简单,以后仍然要保持干净、简单;
- 不能过度使用设计模式。
四、 避免过度使用设计模式
易维护的程序首先要易理解,这一点远甚于其他。在易理解的代码上才好维护。过分地使用设计模式会增加程序的复杂性和晦涩性,让程序不易理解,从而降低了程序的易维护性。 Switch语句曾经遭致诟病,许多重构的例子就是拿Switch开刀。我认为Switch语句是高效的语句,可以写出极优雅、简单的代码。在很多情况下,直接使用Switch语句比把它拆成若干个Class更“干净”。 再比如,有一段四百多行的代码负责整个系统的调度,如果未来的变化仅仅是修改这四百行代码而不会大量添加代码,那么把这四百多行代码集中在一个函数里面,比将它拆分成十来个Class更加容易维护。
正式内容
创建型 结构型 行为型 类 Factory Method Adapter_Class Interpreter
Template Method 对象 Abstract Factory
Builder
Prototype
Singleton Adapter_Object
Bridge
Composite
Decorator
Facade
Flyweight
Proxy Chain of Responsibility
Command
Iterator
Mediator
Memento
Observer
State
Strategy
Visitor 概览
- C#设计模式迷你手册
- C#设计模式迷你手册
- 设计模式迷你手册 更新了!!!每一个模式都增加了C++和C#例子代码!
- 设计模式迷你手册——附C++和C#例子代码 (from http://redsword.cn.st)
- 《设计模式之禅(第2版)》迷你书
- 《C#类设计手册》读书随笔
- 《C#类设计手册》基础知识要点
- 设计模式速查手册目录
- /LGC设计模式/设计模式速查手册
- C#设计模式
- C#设计模式
- C#设计模式收集
- C#设计模式(大全)
- c#设计模式
- c#设计模式
- 《C#设计模式》笔记
- Decorator设计模式 C#
- C# 3.0设计模式
- 使用ArcGIS Server和ASP.net建立一个简单的网站
- OO中的普遍性和抽象性
- E文积累_20070924
- SQL中decode函数的用法
- 新收集的WAPPUSH代码,并经过改造(java版)
- C#设计模式迷你手册
- 昨天才会用VS2005制作一个非常非常简单的程序,有点晕啊!还是不会呢!
- 大家好!
- 做一个项目是遇到的问题与求解!
- PHP-进行模块化设计
- 个人做的上传程序
- 美军士兵手册
- 经典实用的触发型导航菜单
- RXNA组织简介