设计模式

来源:互联网 发布:dhcp服务器需要mac 编辑:程序博客网 时间:2024/06/07 03:42

    设计面向对象软件比较困难,而设计可复用的面向对象软件就更加的困难。你必须找到相关的对象,以适当的粒度将他们归类,再定义类的接口和继承层次,建立对象之间的基本系。然而设计模式使人们可以更加简单方便的复用成功的设计和体系结构。

什么是设计模式:

     Christopher Alexander说过:"每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复的劳动。"

模式的四个基本要素:

   模式名称(pattern name)    一个助记名,它用一两个词来描述模式的问题、解决方案和效果。

   问题 (problem)   描述了应该在何时使用模式。

   解决方案(solutin)   描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。

   效果(consequences)   描述了模式应用的效果及使用模式应权衡的问题。

基本的设计模式的分类:

  基本的设计模式的分类方法有两种:(1) 目的准则   (2) 范围准则

   目的准则(即模式是用来完成什么工作的)可分为: 创建型(Creational)、结构型(Structural)、行为型(Behavioral)三种。创建型模式与对象的创建有关;结构型模式处理类和对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。

   范围准则可分为:类模式还是对象模式。类模式处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来。对象模式处理对象间的关系,这些关系在运行时刻是可以变化的,更具动态性。

  创建型类模式将对象的部分创建工作延迟到子类,而创建型对象模式则将它延迟到另一个对象中。结构型类模式使用继承机制来组合类,而结构型对象模式则描述了对象的组装方式。行为型类模式使用继承描述算法和控制流,而行为型对象模式则描述一组对象怎样协作完成单个对象所无法完成的任务。

   各个基本设计模式关系如下:

怎样选择设计模式:

1、考虑模式是怎样解决设计问题的

2、浏览模式的意图

3、研究模式的相互关联

4、检查重新设计的原因

5、考虑到设计中的哪些因素是可变的

怎样使用设计模式:

1、了解该模式,特别注意其适用性部分和效果部分,确定它是否适合你的问题。

2、研究结构部分、参与者部分和协作部分,确保你理解的这个模式的类和对象以及他们是怎样关联的。

3、选择模式参与者的名字,使它们在应用上下文中有意义。

4、定义类,声明它们的接口,建立他们的继承关系,定义代表数据和对象引用的实例变量。

5、定义模式中专用于应用的操作名称。

6、实现执行模式中责任和协作的操作。

关于设计模式是不可以随便使用的。通常你通过引入额外的间接层次获得灵活性和可变性的同时,你也使设计变得更复杂或牺牲了一定的性能。一个设计模式只有当它提供的灵活性是真正需要的时候,才有必要使用。当衡量一个模式的得失时,它的效果部分是最能提供帮助的。

0 0
原创粉丝点击