模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案
软件模式的基本结构- 问题描述
- 前提条件
- 解法
- 关键解法
- 其他相关模式
- 效果
设计模式是在特定环境下为解决某一通用软件设计问题提供的一套定制的解决方案,该方案描述了对象和类之间的相互作用
设计模式的两大主题- 系统复用
- 系统扩展
- 模式名称
- 问题
- 解决方案
- 效果
-
根据目的分类
- 创建型: 用于创建对象
- 工厂方法模式
- 抽象工厂模式
- 建造者模式
- 原型模式
- 单例模式
- 结构型
- 适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 行为型
- 职责链模式
- 命令模式
- 解释器模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 模板方法模式
- 访问者模式
- 创建型: 用于创建对象
-
根据范围分类
-
类模式: 处理类和子类之间的关系,这些关系通过继承建立,在编译时就确定下来,是一种静态关系
- 工厂方法模式
- (类)适配器模式
- 解释器模式
- 模板方法模式
-
对象模式: 处理对象间的关系,这些关系在运行时变化,更具有动态性
- 抽象工厂模式
- 建造者模式
- 原型模式
- 单例模式
- (对象)适配器模式
- 桥接模式
- 组合模式
- 装饰模式
- 外观模式
- 享元模式
- 代理模式
- 职责链模式
- 命令模式
- 迭代器模式
- 中介者模式
- 备忘录模式
- 观察者模式
- 状态模式
- 策略模式
- 访问者模式
-
- 融合了众多专家的经验,并以一种标准的形式供广大开发人员所用
- 提供了一套通用的设计词汇和一种通用的语言,以方便开发人员之间进行沟通和交流,使得设计方案更加通俗易懂
- 让人们可以更加简单方便地复用成功的设计和体系结构
- 使得设计方案更加灵活,且易于修改
- 将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本
- 有助于初学者更深入地理解面向对象思想,方便阅读和学习现有类库与其他系统中的源代码,还可以提高软件的设计水平和代码质量
| 设计原则名称 | 定义 | 使用频率 |
|---|---|---|
| 单一职责原则 | 一个完整的对象应该只包含单一的职责,并且该职责被完整地封装在一个类中 | ★★★★☆ |
| 开闭原则 | 软件实体应当对扩展开放,对修改关闭 | ★★★★★ |
| 里氏代换原则 | 所有引用基类的地方必须能透明地使用其子类对象 | ★★★★★ |
| 依赖倒转原则 | 高层模块不应该依赖低层模块,它们都应该依赖抽象,抽项不应该依赖与细节,细节应该依赖于抽象 | ★★★★★ |
| 接口隔离原则 | 客户端不应该依赖那些它不需要的接口 | ★★☆☆☆ |
| 合成复用原则 | 优先使用对象组合,而不是通过继承来达到复用的目的 | ★★★★☆ |
| 迪米特法则 | 每一个软件单位对其他单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位 | ★★★☆☆ |



