C#设计模式乱谈(一)

C#设计模式乱谈(一)

 

其实很早以前就想仔细看看《设计模式:可复用面向对象软件的基础》这本书,于是到网上下了一本PDF版的,这绝对是一本好书,它的首要原因是太多人提到这本书,其次是我看了几天,还是毫无收获,就象一个人初入武当,师傅也不管他,直接丢了一本《武当心法》给你,然后让你自已去体会,我想他一定会不知所云。我想我也是这样子,应该是我功力太浅,所学甚少的缘故吧,于是最终不了了之了。总算2005年10月份开始李建忠老师开始在MSDN的WebCasts开讲设计模式,对于这位老师我是非常敬仰的,正好他此次讲的是如何在C#中使用设计模式,基本上每个月是两次直播,一共是24节课,整整讲了12个月,到了2006年11月才讲完(视频下载地址如下:http://www.microsoft.com/china/msdn/events/webcasts/shared/webcast/downloadarchive.aspx)。我是没有耐心跟着看的,于是到了12月份才一气全部下载下来,慢慢的看。总算开始对设计模式有了一些体会。

现在就来谈谈我对采用设计模式来设计软件的一些体会吧。设计模式就象武术中的招式,它每种设计模式就是针对一种情况的解决方案。当然,首先是软件需求发生了变化,因此才需要进行软件重构,如果软件需求没有发生变化,那么原有的设计就是很好的,不要因为模式而模式。GoF提出了23种设计模式,但是你可以在熟悉这些设计模式的基础上,本着设计模式的设计原则来扩展设计模式。那设计模式有哪些基本原则呢?

设计模式的原则可以归纳成以下三条

1)针对接口编程,而不是针对实现编程。接口相对固定,具体实现则变化频度大,因此为了保证软件的松耦合,可以根据具体的需求来实现接口编程。

2)优先使用对象组合,而不是类继承。这一条好象跟我们以前初学编程时的观念有所冲突。实际上设计模式是要把其它类当作一个黑盒来使用,只需要知道它的功能,而不需知道它的实现。而类继承在某种意义上是一种白盒使用,它很多地方是需要知道基类的实现的。比如protect所定义的东东。

3)封装变化,谁变化,封装谁。这句话好理解,但是要避免一开始就想套用什么设计模式,应该封装谁,应该是变化来了后,再根据变化点来进行封装。

设计模式提出了很多年了,但是应该说应用的软件还不是很多,很多人包括我在写程序时即算是用C#这样的面向对象的语言写出来的东东还是面向过程的思维方式,并没有考虑太多的设计。软件界提出很多设计模式的具体原则,如单一职责原则(SRP)、开放封闭原则(OCP)、替换原则(LSP)、依赖倒置原则(DIP)、接口隔离原则(ISP),我倒是认为其实这些都不是主要的东东,并不一定要完全按以上原则来实现设计模式。不过开放封闭原则我还是相当认同,它的意思是开放扩展,封闭修改。也就是一个DLL写好后,你只要通过扩展一个DLL,而不用打开原来的DLL的代码去修改再编译就可以实现你的新功能。这样的确不错。

最后谈一谈设计模式的分类。设计模式按功能可以分成三大类

一、    创建型:负责解决对象的创建变化的问题

二、    结构型:负责解决类与对象之间关系的问题

三、    行为型:负责解决类与对象职责分配问题

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值