一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

我回来了,大家好,还记得我吗?

时间:2008-01-12 编辑:简简单单 来源:一聚教程网

好久没来坛子了,很想念大家,由于英国的课程很紧,没时间写东西,又是在公共机房,IE没装中文语言包,没有权限下载:(,就没法看国内站点,这次是放假回来几天,看到了开心的mail,终于又找到组织了。正好这学期学了点设计模式,这次给大家写点设计模式的东西吧。
首先,什么是设计模式呢?简单的说,设计模式是一种针对某一领域的特定的问题给出解决方案的模式。尽管大多数的项目是不同的,但是他们还是会面对许多有普遍性的问题。引用Christopher Alexander的一句话“每个设计模式都描述了一个在开发中屡次出现的问题,并描述了针对这个问题的核心的解决方案,这样你就可以无数次的使用这个方案,而不用每次重复的劳动”。但是请注意这个解决方案只是一个高度概念化的解决方案,它与特定的语言,平台或工具无关,它也不涉及到实现的细节。
设计模式大致可分为三个大的类别,即Creational Patterns,Structural patterns,Behavioral patterns。
Creational Patterns,顾名思义,是处理对象创建的过程的,描述了对象是怎样被创建的,谁在创建对象上有控制权,何时对象被创建以及用现有的对象创建其他的对象的对象之间的关系。这种类型的模式给系统带来极大的灵活性和可扩展性,这是由于在实际的对象和客户端使用的对象之间总是有一个间接的层。通过封装对象的创建过程,我们可以避免重复编写对象之间的关系和封装的代码。这个类别中两个最常见的模式是Factory pattern和Singleton pattern。
a)在Factory pattern中总是有一个factory对象负责产生其他对象的实例。客户端从factory中请求一个特定类型的对象,factory决定什么对象被实例化。这种模式的优点是客户端可以不去考虑事实上是什么对象被创建(这通常是基于interface的),客户端可以不去考虑复杂的对象细节。这就可以使我们在改动例示的对象的同时无需改动客户端的代码。这样如果需求有变化时,你所需要做的只是改变factory去产生一个不同的对象。COM是在很大程度上依赖这种模式的IClassFactory用来例示COM对象.
用图来表示就是:
    InterfaceI
    |    |    |
      ObjA  ObjB ObjC
    |    |    |
      Factory-------ClientObjcect

热门栏目