.NET设计模式(1):开篇

.NET设计模式开篇

——.NET设计模式系列之一

Terrylee20051206

前言

加入Design & Pattern团队有几个月的时间了,惭愧的是从没有写过关于设计模式的随笔,得到wayfarer的同意,把企业库系列的随笔放在了团队的首页上。不是不想去写这样的随笔,也不是没有时间,自己初学设计模式,去写设计模式的文章,有点班门弄斧的味道。园子里吕震宇老师的《设计模式系列》和wayfarer的《设计之道》堪称设计模式里的经典之作。可是正如wafarer所说的那样,受到发表欲的蛊惑,本着交流就是进步的想法,思考再三,还是决定写这样的随笔,来对设计模式做一些探索和总结,起名曰“探索设计模式”,有些言过其实,就当是记录自己学习设计模式的历程吧,不过还是希望能得到各位前辈的指点!

设计模式

设计模式是规则吗?

地上本没有路,走得人多了也就成了路。设计模式如同此理,它是经验的传承,并非体系;是被前人发现,经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。

设计模式是架构吗?

架构和模式应该是一个属于相互涵盖的过程,但是总体来说架构更加关注的是所谓的High-Level Design,而模式关注的重点在于通过经验提取的准则或指导方案在设计中的应用,因此在不同层面考虑问题的时候就形成了不同问题域上的模式。模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的准则,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。

设计模式,软件的永恒之道?

这个问题没有答案,有的只是讨论,看一下一位前辈结合建筑学得出的几点心得吧:

和建筑结构一样,软件中亦有诸多的内力。和建筑设计一样,软件设计也应该努力疏解系统中的内力,使系统趋于稳定、有生气。一切的软件设计都应该由此出发。

任何系统都需要有变化,任何系统都会走向死亡。作为设计者,应该拥抱变化、利用变化,而不是逃避变化。

好的软件只能产生而不能创造,我们所能做的只是用一个相对好的过程,尽量使软件朝向好的方向发展。

需要设计模式吗?

答案是肯定的,但你需要确定的是模式的应用是否过度?我得承认,世界上有很多天才的程序员,他可以在一段代码中包含6 种设计模式,也可以不用模式而把设计做得很好。但我们的目标是追求有效的设计,而设计模式可以为这个目标提供某种参考模型、设计方法。

我们不需要奉GOF的设计模式为圭臬,但合理的运用设计模式,才是正确的抉择。很多人看过GOF的《Design Patterns》,对这23 种模式也背得滚瓜烂熟。但重要的不是你熟记了多少个模式的名称,关键还在于付诸实践的运用。为了有效地设计,而去熟悉某种模式所花费的代价是值得的,因为很快你会在设计中发现这种模式真的很好,很多时候它令得你的设计更加简单了。

其实在软件设计人员中,唾弃设计模式的可能很少,盲目夸大设计模式功用的反而更多。言必谈“模式”,并不能使你成为优秀的架构师。真正出色的设计师,懂得判断运用模式的时机。还有一个问题是,很多才踏入软件设计领域的人员,往往对设计模式很困惑。对于他们来说,由于没有项目的实际经验,OO 的思想也还未曾建立,设计模式未免过于高深了。其实,即使是非常有经验的程序员,也不敢夸口对各种模式都能合理应用。[--摘自wayfare的设计之道]

后记

关于设计模式的理论性的文章,已经写了很多了,我不想再继续重复抄写下去,仅记录下上面几段话,用它来作探索设计模式系列的一个开篇吧。[现已更名为.NET设计模式]

作者:TerryLee
出处:http://terrylee.cnblogs.com
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
posted @ 2005-12-09 08:59 TerryLee 阅读(52033) 评论(46) 编辑 收藏

 回复 引用   
#1楼 2005-12-16 11:02 清炒苦瓜[未注册用户]
谢谢!看了你的这篇文章,对我有不少的启发。我做JAVA才2年,但一直没有专门去研究设计模式。但平时在项目开发过程中,却用了一些模式,其中工厂模式是最经常碰到的了。就像你说的一样“为了有效地设计,而去熟悉某种模式所花费的代价是值得的”,我想是时候花一些时间去熟悉一些常用的设计模式了。以后请多多指点呐。
 回复 引用 查看   
#2楼[楼主] 2005-12-16 11:14 Terrylee      
@清炒苦瓜

没问题,大家互相学习嘛

我会把设计模式系列文章写完的

不过可惜的是我是用.NET平台的,不能用JAVA语言来描述设计模式

 回复 引用 查看   
#3楼 2005-12-17 17:24 wayfarer      
支持TerryLee的这个系列。“设计模式”作为一种面向对象设计的思想,虽然已经被炒了很多遍,但厨师不同,炒出来的味道也不一样。酸甜咸淡麻辣,总有适宜的味道。技术这个东西,怕的不是反复炒,而是搁在冷藏室里放变味。
所谓“开卷有益”,而“探索”更是有利。在探索中体会乐趣的同时,将经验和所得展示出来,未尝不是一个贡献。

 回复 引用 查看   
#4楼[楼主] 2005-12-19 08:38 Terrylee      
@wayfarer

多谢支持,我一定坚持写完:)

 回复 引用 查看   
#5楼 2006-02-22 08:15 哥哥.Net      
严重支持Terrylee~!
 回复 引用   
#6楼 2006-05-24 09:05 cameo[未注册用户]
支持TerryLee
 回复 引用 查看   
#7楼 2006-07-05 08:31 3echo      
文笔流畅,写得很好,支持!
开卷有益,何况这么好的文章,我想我一定会认真地读下去.

 回复 引用 查看   
#8楼[楼主] 2006-07-05 08:42 TerryLee      
@哥哥.Net
@cameo
@3echo

谢谢大家的支持,呵呵:)

 回复 引用   
#9楼 2006-07-05 15:12 方法的[未注册用户]
持TerryLee
 回复 引用 查看   
#10楼[楼主] 2006-07-05 15:36 TerryLee      
@方法的
^_^

 回复 引用 查看   
#11楼 2006-08-18 08:33 csu02      
shou
 回复 引用 查看   
#12楼 2006-08-27 14:10 霜之哀伤      
不错不错
 回复 引用 查看   
#13楼[楼主] 2006-08-28 08:31 TerryLee      
@霜之哀伤
谢谢哦,呵呵:-)

 回复 引用   
#14楼 2006-09-05 08:19 君子务本[未注册用户]
能在茫茫知识海洋中有你这样的航标,的确是在下的一件幸事!
 回复 引用 查看   
#15楼[楼主] 2006-09-05 17:24 TerryLee      
@君子务本
呵呵,过奖了:-)

 回复 引用   
#16楼 2006-09-22 15:19 Robin.li[未注册用户]
狂顶啊,写的太好了~~~
 回复 引用   
#17楼 2006-10-29 14:15 cboy[未注册用户]
支持
 回复 引用   
#18楼 2006-10-31 13:41 小兵[匿名][未注册用户]
正在学习设计模式,看了你的文章,有很多启发.
不错不错!

 回复 引用 查看   
#19楼[楼主] 2006-10-31 19:27 TerryLee      
@Robin.li
@cboy
@小兵[匿名]
谢谢各位的支持:)

 回复 引用   
#20楼 2006-11-21 18:26 过路人[未注册用户]
支持TerryLee的这个系列.
之前的EntLib系列我都很认真看过,再次表示支持!

 回复 引用 查看   
#21楼[楼主] 2006-11-21 18:34 TerryLee      
@过路人
谢谢……

 回复 引用   
#22楼 2006-12-06 11:22 迷途[未注册用户]
正在学习中,好文章.顶!
 回复 引用 查看   
#23楼[楼主] 2006-12-06 13:00 TerryLee      
@迷途
谢谢……

 回复 引用   
#24楼 2006-12-18 11:58 蓝星[未注册用户]
我写程序也有一年多了,以前没有接触设计模式,都是停留在结构程序设计,接触了之后,通过自己的一些练习,感觉是另外一片空间,真得柳暗花明又一村,真正感觉设计的快乐.感谢你和wayfarer给我们程序指明一条光明大道...
我会一直支持你们!!

 回复 引用 查看   
#25楼[楼主] 2006-12-18 23:42 TerryLee      
@蓝星
非常感谢

 回复 引用 查看   
#26楼 2007-01-11 09:16 Nina      
謝謝!!我現在不知道我是否用過,因為連概念都沒有.希望能繼續寫下去
 回复 引用 查看   
#27楼[楼主] 2007-01-15 08:40 TerryLee      
@Nina
最近有些忙,过几天再写吧

 回复 引用 查看   
#28楼 2007-01-20 13:39 heqing      
有你,中国的软件更有前途!
 回复 引用 查看   
#29楼 2007-01-30 18:37 海纳百川      
楼主,

谢了,非常好的系列文章。

 回复 引用 查看   
#30楼[楼主] 2007-02-07 17:04 TerryLee      
@海纳百川
谢谢:)

@heqing
谢谢

 回复 引用   
#31楼 2007-02-10 17:28 huangying[未注册用户]
呵呵
支持!!
谢谢

 回复 引用 查看   
#32楼 2007-02-11 16:22 翁培铖      
Terry大佬我返来啦,之前一直没看你的文章,我年过后要去开发.net架东西了,剩下几天我一定要狂读你blog上所有文章,嘻嘻。多谢你提供这么多东西啊。
 回复 引用   
#33楼 2007-04-12 21:29 徐雷[未注册用户]
写的很不错哦
呵呵
支持
我做开发这样久了还没有好好看过这个方面的书
今天是无意间baidu到你的blog了
看了一下
收益非浅啊
收了!~~
加油!

 回复 引用   
#34楼 2007-04-13 15:47 tj foreid[未注册用户]
密切关注中……
 回复 引用   
#35楼 2007-05-22 13:30 lrl[未注册用户]
关注更新
中国翻译考试成为面向海内外的人才评价服务体系

新华网北京2007年7月28日电(记者 吴晶)全国翻译专业资格(水平)考试(简称翻译考试)自2003年设立以来,已在全国实施英、法、日、俄、德、西班牙、阿拉伯等7个语种的二、三级笔译和口译(交替传译类)考试,成为面向海内外的一项人才评价服务体系。



  国家人事部、中国外文局28日在北京联合举办翻译考试7个语种专家委员会换届大会。外文局常务副局长兼翻译考试领导小组组长郭晓勇说,翻译考试是一项国家职业资格考试,是对参试人员口译或笔译方面双语互译能力和水平的评价与认定。

  目前翻译考试每年实施两次,分为7个语种,即英、法、日、俄、德、西班牙、阿拉伯语;两大类别,即笔译和口译,其中口译又分交替传译和同声传译两个专业类别;四个等级,即:资深翻译与一级、二级、三级口译、笔译翻译。

  目前已在全国实施英、法、日、俄、德、西班牙、阿拉伯等7个语种的二、三级笔译和口译(交替传译类),7个语种的二、三级口、笔译考试,加上英语同声传译考试,共有29种58个科目。

  郭晓勇指出,翻译考试是对中国翻译系列职称评审制度的重大改革。自2008年起,7个语种的二、三级翻译人才聘任资格只能通过翻译考试取得。“这将进一步规范翻译市场,加强行业管理,使之更好地与国际接轨。”

  郭晓勇还说,从2007年起,翻译考试向台湾居民开放。

  他还强调,翻译考试不仅面向中国公民,还包括在中国工作的外籍人员。每年都有来自日本、新加坡等国的外籍人员报名参加。浏览考试官方网站的人员的国家和地区已达50个。

  据透露,今后翻译考试将与翻译硕士专业学位教育进行衔接。获得翻译硕士专业学位者应同时通过二级翻译专业资格(水平)考试,从而达到国际上通行的“职业学位”标准。

  据统计,从2003年至今,翻译考试累计报名人数已有约5万人次,累计考试合格人数达近8000人次。2007年上半年,已有逾万人次报名。

责编:陈曦霞


 回复 引用   
#37楼 2007-08-27 17:45 南瓜[未注册用户]
很好
 回复 引用 查看   
#38楼 2007-11-01 18:41 光头小松鼠      
我可以读懂你写的文章,设计模式准备从这里学起!
 回复 引用 查看   
#39楼 2007-11-06 16:25 专研.NET      
高手所见就是不一样啊!!1
 回复 引用 查看   
#40楼 2007-12-24 14:54 g無s所p畏       
我从今天开始,学习设计模式,
应该不晚,只要坚持到底!
谢谢你的资源

 回复 引用 查看   
#41楼 2007-12-26 09:37 李一永      
喜欢你的文章,支持!
 回复 引用 查看   
#42楼 2008-03-11 12:58 随风逝去      
一直发现博主有一种莫名的气质,今天,看了这篇文章的第一段,才发现,这种气质是源自谦虚!
 回复 引用 查看   
#43楼[楼主] 2008-03-11 13:20 TerryLee      
@随风逝去
谢谢,呵呵:)

 回复 引用 查看   
#44楼 2009-07-14 12:27 小屋      
"其实在软件设计人员中,唾弃设计模式的可能很少,盲目夸大设计模式功用的反而更多。言必谈“模式”,并不能使你成为优秀的架构师。真正出色的设计师,懂得判断运用模式的时机。"



Mark

 回复 引用   
#45楼 2009-08-03 20:17 痕迹[未注册用户]
确实不错,很多时候对我们新手来说,大片的知识并不重要,而是要更多的理解,我会不断的和楼主学习!!!