.NET2.0设计模式 (.NET 2.0 Patterns)

设计模式可以说是软件孙子兵法,

设计模式可以说是程序员的哲学.

.net1.X发展到3.5.新技术如同大海后浪推前浪.做为一个程序员,特别是三十岁的程序员,你该怎么做?

1,继续学习,WCF,WPF,局部方法.

2,该行不做程序员

3,走向软件架构分析,

我想大多数人的回答是3.

什么是模式(What is Patterns)

      你也许要问,为什么要写这个专题,为什么要使用设计模式?的确很奇怪,这个想法是我在给学生做设计模式讲座的时候.当时我让学生正在做练习,我看见一个学生编写代码的时候继承自一个类而不是接口.我问他为什么这样写代码?他说"因为我一直都这样写啊."这个同学的说法是错误的,但是他的回答从另外一个侧面反映出一个观点.用一个类可以解决问题为什么还要用接口呢?后来我仔细想道:"如果先讲设计模式(Patterns)再讲面向对象(OOP),或许就更好一点."

      这个时候有人就要问了,什么是面向对象?什么是设计模式(Patterns)?我前面将设计模式比喻为"孙子兵法".那我们就拿带兵打仗来比喻软件开发.一个军团(类),里面有士兵(字段),坦克(属性),训练(方法).面向对象(OOP)就是研究一个军团内部的问题.比如说现在这个军团需要排雷能力,那么我们就要制定的排雷的训练.让我们的军团有排雷的能力.现在问题比较大了,需要打一个战役.多个军团协作处理.现在的总将军需要让工程兵团去排雷,空军控制领空权,而海军炮火掩护,登陆军团准备的登陆战.将军需要了解工程兵怎么排雷吗?将军需要了解飞机怎么开吗?......当然都不需要了解,他的任务是让会开飞机(开飞机接口)的人去开飞机.会排雷(排雷接口)的人去排雷.这样就有了各式各样的接口,指挥人员了解接口就可以了.那么为了打胜这场战役还需要用到这个计谋,兵种之间的配合.设计模式就是研究这些计谋,兵种配合的.

      人类文明发展了5000多年,5000多年来一直有战争发生.兵法其实就是战争理论抽象的经验总结.它并没有说要采用刀和矛,或者抢和炮.然后不论是古代还是在现代都是可以应用的.从机器语言到汇编语言,从汇编语言到高级语言,从面向过程到面向对象.软件开发也在飞速的发展.设计模式没有说如何建立一个TCP监听,设计模式没有说如何用程序生成一个HTML页面.那么设计模式就是软件开发抽象的经验总结.

为什么用模式(Why use Patterns)

       现在就有人要问,为什么要使用设计模式?我再给大家举一个生活中的例子--盖房子.研究一个瓦工,瓦工有名字,所属施工队,会砌墙.这个就是面向对象.那么施工负责人作做什么呢?他安排瓦工去砌墙,安排力工给送砖送沙子灰.施工负责人需要按照施工图纸来施工.只用面向对象的方式在组织这个施工,只能从下向上.现有瓦工,力工,然后才能有施工负责人,因为施工负责人需要调用瓦工的砌墙方法,需要调用力工的送沙子方法.等施工负责人的类写好了才能有施工图纸类,因为图纸类需要调用施工负责人的组织施工方法.这样就会带来一个麻烦,就是等施工图纸类完成了,才发现这个大厦是个医院的样子,而我们需要盖个学校.拆了重新来.

      人类处理问题先要提出需求,然后设计方案,然后实施.刚才讲的该房子的例子完全反过来了,先决定怎么实施,然后决定实施方案,最后才是和需求比较.这个时候设计模式就出来了.他的思路是先决定需求,然后按照需求采用接口搭出软件架构,最后才是实施和开发.

      为什么要使用设计模式呢?就是按照人类处理现实问题的思路来处理程序问题.

如何使用模式(How to use Patterns)

      这是我第一次写设计模式方面的文章。按照我自己方式每个模式我都采用3W1H方法讲述。有朋友要问了,什么是3W1H法?其实是一些英文的缩写。Why、What、How、Where。Why部分说明为什么要使用该技术,我可以在这里举例子说明使用该技术会怎么样?不使用该技术怎么样?这个技术对开发人员有什么好处?这个技术对性能会怎样?What部分给这个技术下一个定义,这里我会下两次定义,一次是采技术术语定义,一次采用通俗的语言下定义。在How部分我会告诉大家如何用.NET(C#)来实现这个技术。最后就是Where部分,在这里我会告诉大家什么场合适合这个技术。谈到如何使用设计模式,下面是我这个专题的目录

.NET2.0设计模式 (.NET 2.0 Patterns) 1 -- 单件模式(Sington Patterns)

.NET2.0设计模式 (.NET 2.0 Patterns) 2 -- 桥接模式(Bridge Patterns)

.NET2.0设计模式 (.NET 2.0 Patterns) 3 -- 工厂模式(Factory Patterns)

.NET2.0设计模式 (.NET 2.0 Patterns) 4 -- 抽象工厂模式(Abstract Factory Pattern)

.NET2.0设计模式 (.NET 2.0 Patterns) 5 -- 管道过滤器模式(Pipes and Filters Pattern)

posted @ 2008-12-07 13:12  陈大杰  阅读(292)  评论(0编辑  收藏  举报