参考书籍
《软件工程 实践者的研究方法》第八版 第16章 基于模式的设计
内容总结
所谓设计模式,是用来描述问题以及解决方案的规范化方法,在某种程度上允许软件工程界获取设计知识,使解决方案能够得到重用。
“重复发明轮子”的情况在软件开发领域一直都存在,既浪费时间也浪费精力。通过已经存在的设计模式,可以获得特定问题的已被证明的解决方案。
设计模式可以解决问题。模式可以捕捉解决方案,不只是抽象的原则或策略。
设计模式是已经得到验证的概念。模式借助于踪迹记录捕捉解决方案,而不是根据理论或猜测。
模式具有显著的人性化元素。
| 创建型模式 |
|
| 抽象工厂模式 |
集中决定实例化什么工厂 |
| 工厂方法模式 |
集中创建某一特定类型的对象,并从几种实现中选择其中一种 |
| 生成器模式 |
将一个复杂对象的构建与其表示相分离,使得同样的构建过程可以创建不同的表示 |
| 结构型模式 |
|
| 适配器模式 |
将一个类的接口转换成客户希望的另一个接口 |
| 聚集模式 |
是组合模式的一个版本,采用将产物聚集在一起的方法 |
| 复合模式 |
符合模式就是一个具有同样接口处理对象的树结构模式 |
| 容器模式 |
创建对象的唯一目的就是装载其他对象并管理他们 |
| 代理模式 |
一个类的作用是作为另一个类的接口 |
| 管道和过滤器 |
是一个过程链,每个过程的输出是下个过程的输入 |
| 行为型模式 |
|
| 责任链模式 |
对命令对象进行处理,或者通过逻辑包含的处理对象传递给其他对象进行处理 |
| 命令模式 |
命令对象把行动和参数封装起来 |
| 迭代器模式 |
迭代器用于按顺序访问一个聚集对象中的元素,而不必暴露其底层表示 |
| 中介者模式 |
对于子系统的一组接口提供一个统一的接口 |
| 访问者模式 |
将算法从一个对象中分离出来的方法 |
| 层次访问者模式 |
提供一种方式,访问层次数据机构(例如树)上的每个节点 |
心得体会
- 不要强行使用一个模式,即使它解决了眼前的问题。如果环境和影响因素是错误的,那么就寻找另一个模式。
- 如果一个体系结构模式是可用的,那么就检查所有相互协作的模式。如果这个模式合适,就对所提出的设计方案进行修改,并构建一个充分代表此模式的设计模型元素。
- 不考虑抽象层的情况下,如果模式语言、模式库或单个的模式是存在的,那么要将解决的问题和现存的模式进行比较。
- 以演绎和推理的方式使用设计模式。假设一个通用问题的需求是X,模式Y可以解决X,因此就使用模式Y。
- 使用基于模式的设计时,会发生很多常见的错误。通常是没有足够的时间去理解根本问题、问题所在的环境及影响因素,所以选择了看似正确但并不适合解决方案的模式。
- 一旦选择了错误的模式,要正视自己的错误,为不是强行适应模式。
- 不能只照着字面的意思去应用模式,要针对具体问题对模式进行修改。
编辑界面截图
