软件设计模式
设计模式(Design Pattern)
定义:
**设计模式是一套被反复使用、多数人知晓、经过分类编目的、代码设计经验的总结。**使用设计模式为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
设计模式的关键要素:
- 模式名称(Pattern name)
- 问题(Problem)
- 解决方案(Solution)
- 效果(Consequences)
设计模式的主要优点:
- 以一种标准的形式供广大开发人员所用,提供了一套通用的设计词汇和一种通用的语言方便开发人员之间的沟通和交流。
- 对于使用不同编程语言的开发和设计人员都可以通过设计模式交流系统设计方案,降低开发人员理解系统的复杂度。
软件体系结构
定义:是对系统的高层设计,是从一个较高的层次来考虑组成系统的构件、构件之间的连接关系,以及系统需满足的约束等。
设计模式可以用于软件体系结构的设计,以实现体系结构级的设计复用。
用于软件体系结构的设计模式通常称为:
- 架构模式(Architecture Pattern)
- 体系结构风格(Architectrue Style)
根据问题的规模或抽象层次将设计模式分为三个层次:
- 架构模式:是一种高层模式,用于描述系统级的结构组成、相互关系及相关约束。
- 设计模式:中层模式,是针对系统局部设计问题给出的解决方案。
- 习惯用法:是与具体编程语言相关的底层模式,给出的解决方案通常与编程语言的某种语法机制相关。
设计模式的分类
根据目的分类:
- 创建型(Creational)模式主要用于创建对象
- 结构型(Structural)模式主要用于处理类或对象的组合
- 行为型(Behavioral)模式主要用于描述对类或对象怎样交互和怎样分配职责
根据范围分类:
类模式:处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,属于静态的。
对象模式:处理对象间的 关系,这些关系在运行时刻变化,更具动态性。
开闭原则
对于扩展是开放的(Open for extension):模块的行为是可以扩展的,即当需求改变时,软件开发者可以对模块进行扩展,增加新的功能
对于修改是封闭的(Close for modification):在对模块进行扩展时,不允许改动模块中存在的类的源代码