一.什么是设计模式

什么是设计模式模式的定义:模式是一种问题的解决思路,它已经适用于一个实践环境,并且可以适用于其他坏境。设计模式通常是对于某一类的软件设计问题的可重用的解决方案,
  • 什么是设计模式

  模式的定义:模式是一种问题的解决思路,它已经适用于一个实践环境,并且可以适用于其他坏境。

  设计模式通常是对于某一类的软件设计问题的可重用的解决方案,将设计模式引入软件设计和开发过程,其目的就在于要充分利用已有的软件开发经验。

  设计模式的种类很多,包括分布式编程模式、用户界面模式、数据模型模式三大类。目前流程的面向对象设计模式,仅1995年“gang of four”描述的就有二十多种,我们称之为GoF模式;与GoF模式相对应的另一种重要的设计模式是通用责任分配软件系列模式(GRASP)。

  GRASP模式着重考虑设计类的原则及如何分配类的功能,而GoF模式则着重考虑设计的实现、类的交互和软件的质量。已经说,GoF模式就是符合GRASP模式要求的面向对象设计模式。

  模式应该有以下特点:

    (1) 在特定的场景下有可重用性,对相同类型不同问题的环境,其解决方案都有效。

    (2) 可传授性,即问题出现的机会很多,解决问题的方案相同,人们相对可以接受。

    (3) 有表示模式的名称。

  • 设计模式的作用

  设计模式主要有以下作用:

    (1)  重用设计,重用设计比重用代码更有意义,它会自动带来代码的重用。

    (2) 为设计提供共用的词汇,每个模式名就是一个设计词汇,其概念使得程序员间的交流更加方便。

    (3) 在开发文档中采用模式词汇可以让其他人更容易理解你的想法,理解为什么你会这样做,你都做了些什么。编写开发文档也更加容易。

    (4) 应用设计模式可以让重构系统变得容易,可确保开发正确的代码,并降低在设计或实现中出现错误的可能性,还可以为重写其他应用程序提供很好的系统框架。

    (5) 正确使用设计模式,可以节省大量的时间。

  • GRASP模式的分类

  GRASP通用责任分配软件模式没有大类,与其说它是面向对象的设计模式,不如说它是面向对象的设计要求。它细分有9种模式,模式和模式间不是独立的,存在相互平衡制约的关系:

  (1) Infomation Expert (信息专家)

  (2) Creator (创造者)

  (3) Low coupling (低聚合)

  (4) High cohesion (高内聚)

  (5) Controller (控制器)

  (6) Polymorphism (多态)

  (7) Pure Fabrication (纯虚构)

  (8) Indirection (间接)

  (9) Protected Variations (受保护变化)

  • GoF设计模式的分类

  GoF模式在粒度和抽象层次上各有不同,分类很明显。

  1.根据目的准则分类

    就是说,指定的模式用来完成什么样的工作。可分为三种:

    (1) Creational (创建型):与对象创建有关。

    (2) Structural (结构型):处理类或对象的组合。

    (3) Behavioral (行为型):描述类或对象如何交互及如何分配职责。

  2.根据范围准则分类

    即指定的模式用于类还是用于对象,分为两种:

    (1) 类模式:用于处理类和子类之间的关系,这些关系通过继承建立,是静态的,在编译时就已经确定下来了。因为从某种意义上说,几乎所有模式都是使用继承机制,因此此处的“类模式”是指集中处理类间关系的模式,只有很少部分模式属于此类。

    (2) 对象模式:用于处理对象间的关系,这些关系具有动态性,在运行期间是可以变化的。

 

范围\目的 Creational (创建型) Structural (结构型)   Behavioural (行为型)
Simple Factory Adapter (class) Interpreter
Factory Method   Template method
对象 Abstract Factory Adapter (object) Chain of Responsibility
Builder Bridge Command
Prototype Composite Iterator
Singleton Decorator Mediator
  Facade Memento
  Flyweight Observer
  Proxy State
    Strategy
    Visitor