设计模式基础
学习设计模式的意义
可以提高程序员的思维能力、编程能力和设计能力
使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强
使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从而缩短软件的开发周期。
设计模式的诞生与发展
模式(Pattern)起源于建筑业而非软件业 模式之父——美国加利佛尼亚大学环境结构中心研究所所长Christopher Alexander博士,给出了关于模式的经典定义:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,人们可以无数次地重用那些已有的解决方案,无须再重复相同的工作。
模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
20世纪80年代末,软件工程界开始关注Christopher Alexander等在这一住宅、公共建筑与城市规划领域的重大突破 “四人组(Gang of Four,GoF,分别是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides)”于1994年归纳发表了23种在软件开发中使用频率较高的设计模式 从1995年至今,设计模式在软件开发中得以广泛应用,在Sun的Java SE/Java EE平台和Microsoft的.NET平台设计中应用了大量的设计模式
设计模式的定义与分类
目的:
为了可重用代码、让代码更容易被他人理解、提高代码可靠性。
设计模式(Design Pattern)的定义
设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用。
设计模式的基本要素
设计模式一般包含4个关键要素如下:
-
模式名称 (Pattern Name)
-
问题 (Problem)
-
解决方案 (Solution)
-
效果 (Consequences)
设计模式的分类
根据目的:
(模式是用来做什么的)可分为创建型(Creational),结构型(Structural)和行为型(Behavioral)三类:
-
创建型模式主要用于创建对象
-
结构型模式主要用于处理类或对象的组合
-
行为型模式主要用于描述类或对象如何交互和怎样分配职责
根据范
即模式主要是处理类之间的关系还是处理对象之间的关系,可分为类模式和对象模式两种:
-
类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是一种静态关系
-
对象模式处理对象间的关系,这些关系在运行时变化,更具动态性
GoF设计模式简介