.NET设计模式是什么

一开始,你可以把模式想象成一种特别巧妙和敏锐的用以解决某类特定问题的方法。更确切地说,许多人从不同角度解决了某个问题,最终大家提出了最通用和灵活的解决办法。这个问题可能是你以前见过并解决过的,但是你的方法可能比不上你将看到的模式所体现的方法来的完整。

尽管它们被称作“设计模式”,实际上它们没有仅仅限于设计的范畴。模式看起来似乎跟传统的分析、设计和实现相去甚远;恰恰相反,模式体现的是程序整体的构思,所以有时候它也会出现在分析或者是概要设计阶段。这是个有趣的现象,因为模式可以由代码直接实现,所以你可能不希望在详细设计或编码以前使用模式,(实际上在详细设计和编码之前你可能都不会意识到你需要某个特定的模式)。

模式的基本概念也可以看作是设计的基本概念:即增加一个抽象层。无论什么时候,当你想把某些东西抽象出来的时候,实际上你是在分离特定的细节,这么做的一个有说服力的动机就是把变化的东西从那些不变的东西里分离出来。这个问题的另一种说法是,当你发现程序的某一部分由于某种原因有可能会变化的话,你会希望这些变化不会传播给程序代码的其它部分。这么做不但使程序更容易维护,而且它通常使程序更容易理解(这将降低成本)。

很多情况下,对于能否设计出优雅和容易维护的系统来说,最难的就是找到“一系列变化的东西。”(这里,“vector”指最大梯度,而不是指容器类。)这就意味着最重要的是找出你的系统里变化的部分,或者说是找到成本最高的部分。一旦你找出了这一系列变化,你就可以以之为焦点来构造你的设计。

设计模式的目的就是为了把代码里变化的那一部分分离出来。如果你这么看待设计模式,你会发现本书实际上已经讲了一些设计模式了。比如说,你可以认为继承就是一种设计模式(只不过他是由编译器来实现罢了)。通过继承你可以使拥有相同接口(这些接口是不变的)的对象具有不通的行为(这就是变化的部分),组合(composition)也可以被认为使一种模式,它可以静态或者动态地改变你用以实现某个类的对象,从而改变这个类的行为。

posted @ 2012-02-24 10:26  念余温  阅读(536)  评论(0编辑  收藏  举报