技术开发 频道

设计模式的作用

IT168 技术文档】

    有软件开发经验的朋友应该有这样的体会:构建一个优秀的系统最困难之处不在于编码(coding),而是在早期做出的设计(design)上的决定。设计是软件开发生命周期中的关键阶段,好的设计能产生好的产品,而不当的设计则会影响最终产品的质量。设计的重要性已经深入人心,这从人们热烈讨论和研究设计模式就能看出来。设计模式是拥有多年开发设计经验的人给我们的经验传承,它是作为专家的建议而引入的,它背后的真正威力是其对真实世界的抽象。如果我们没有足够的经验,我们很难做出好的设计,但是富有经验的开发者和设计者以设计模式的形式将他们的经验传授给我们,拥有了这些经验之后,我们也能做出好的设计来了。不仅如此,设计模式还提高了我们软件复用的水平,从而提高了生产效率。

    模式的简史和分类

    软件设计模式的思想从建筑领域(Christopher Alexander)进化而来。Kent Beck 和 Ward Cunningham将Christopher Alexander的思想应用到软件领域,他们记下了最初的一些模式(UI方面的);第一个发表的关于在开发中使用模式的著述是Erich Gamma于1991年发表的一篇论文;而最著名的GOF的设计模式(1995)了。

    依照开发阶段,模式可以被分类为分析模式(analysis patterns)、架构模式(architecture patterns)、设计模式(design patterns)和Idiom:

    1、 分析模式——分析包括透过需求的表面去了解本质问题。分析模式就是业务模型中的一组表达了通用基础结构的概念。 
    2、 架构模式——架构模式表达了软件系统的基础结构组织模型。它提供了一套预先确定的子系统和组件,说明了其职责,还包括为组织它们之间的关系而规定的规则和指导原则。 
    3、 设计模式——一个设计模式提供了一个模型,此模型提炼了一个软件系统的子系统或组件。它描述了一个通用的可复用的组件,此组件解决了某特定上下文的一般性的设计问题。
    4、 Idiom——对某个语言特有的一个低级别的模式。比如某些模式只能使用多继承的语言表达(c++)。

    模式的使用现状

    现有的讨论设计模式的书籍著作大多都是介绍和记录设计模式的,而很少有论及如何在开发新的应用时系统地应用这些可复用的设计。

    可以将在应用中使用设计模式分为两个等级:

    1、 偶尔用用。
    2、 系统地使用。系统地使用设计模式超出了只是使用某个特定的模式,它可以被分为:

    A、 模式语言(Pattern Languages)。一个模式语言提供了能解决特定领域问题的一系列模式。它不仅提供了设计模式本身,还提供了这些设计模式之间的关系。它们意味着应用此模式语言完全解决特定领域问题的过程。
    B、 开发过程(Development processes)。一个系统化的开发过程定义了一个模式组合方法、分析和设计的步骤、设计模型和自动化开发步骤的工具。

    系统化的开发过程是唯一能使设计模式成为开发中的惯例(common practice)的方法。为此,我们需要作:

    1. 定义合成技术。此技术可以被用来组合设计模式去构造系统。
    2. 使用合适的模型语言支持此合成技术。

0
相关文章