设计模式复习笔记 (1) 设计模式概述

设计模式的定义(Alexander的经典定义):
每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心,通过这种方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。


软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于设计模式,还包括架构模式、分析模式和过程模式等,实际上,在软件生存期的每一个阶段都存在着一些被认同的模式。

软件模式可以认为是对软件开发这一特定“问题”的“解法”的某种统一表示,它和Alexander所描述的模式定义完全相同,即软件模式等于一定条件下的出现的问题以及解法。软件模式的基础结构由4个部分构成:问题描述、前提条件(环境或约束条件)、解法和效果。

软件模式与具体的应用领域无关,在模式发现过程中需要遵循大三律(Rule of Three),即只有经过三个以上不同类型(或不同领域)的系统的校验,一个解决方案才能从候选模式升格为模式。

从1995年至今,设计模式在软件开发中得以广泛应用,在Java SE/Java EE平台和.NET平台设计中就应用了大量的设计模式。

设计模式一般有如下几个基本要素:
模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式
其中的关键元素包括以下四个方面:
模式名称 (Pattern name)
问题 (Problem)
解决方案 (Solution)
效果 (Consequences)

根据其目的(模式是用来做什么的)可分为:
创建型(Creational):主要用于创建对象。
结构型(Structural):主要用于处理类或对象的组合。
行为型(Behavioral):主要用于描述对类或对象怎样交互和怎样分配职责。

根据范围(模式主要是用于处理类之间关系还是处理对象之间的关系)可分为:
类模式:处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的。
对象模式:处理对象间的关系,这些关系在运行时刻变化,更具动态性。

设计模式复习笔记 (1) 设计模式概述_第1张图片

设计模式的主要优点如下:
1. 设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交流,使得设计方案更加通俗易懂。对于使用不同编程语言的开发和设计人员可以通过设计模式来交流系统设计方案,每一个模式都对应一个标准的解决方案,设计模式可以降低开发人员理解系统的复杂度。
2. 设计模式使人们可以更加简单方便地复用成功的设计,将已证实的技术表述成设计模式会使新系统开发者更加容易理解其设计思路,并避免那些导致不可重用的设计方案。
3. 设计模式使得设计方案更加灵活,且易于修改。
4. 设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。
5. 设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。

你可能感兴趣的:(设计模式)