- 《设计模式 - 可复用面向对象软件的基础》,Design Patterns - Elements of Reusable Object-Oriented Software,Gof
- 豆瓣读书:https://book.douban.com/subject/1052241/
重读经典。第一次阅读这本书的时候,可以说是还完全没什么编程经验,更不用谈在大型程序中阅读相关设计模式的应用代码或者在自己的程序中使用设计模式。所以阅读时,更多的精力都知识花在了理解每个设计模式包含的内容而已。带着第一次阅读时的微弱印象,这次仔细阅读第 1 章 引言,感触良多。这章里作为开篇,自然是要做一些铺垫性的讲解。但是这本书,真是一句废话都没有的。开篇后很快就进入设计模式的系统性论述,以及最关键的怎么在软件设计中应用设计模式。这样内容的一章,其实把他放在书本的末尾作为总结性的一章也是完全可以的。另外在这一章中也讲解了不少软件设计中的一些根本性的问题,以及一些面向对象的思想。可以说是字字玑珠。
第 1 章 前言
每一个设计模式系统地命名、解释和评价了面向对象系统中一个重要的和重复出现的设计。
设计模式使人们可以更加简单方便地复用成功的设计和体系结构。设计模式甚至能够提高已有系统的文档管理和系统维护的有效性。
设计模式的四个基本要素:
- 模式名称
- 问题
- 解决方案
- 效果
MVC 架构的三类对象:
- 应用对象 - 模型(Model)
- 在屏幕上的表示 - 视图(View)
- 定义用户界面对用户输入的响应方式 - 控制器(Controller)
MVC 架构的三个核心设计模式:
- Observer(观察者)
- Composite(组合)
- Strategy(策略)
一个设计模式讲解的多个维度:
- 模式名和分类
- 意图
- 别名
- 动机
- 适用性
- 结构
- 参与者
- 协作
- 效果
- 实现
- 代码示例
- 已知应用
- 相关模式
23 个设计模式汇总:
- 创建型模式
- Factory Method
- Abstract Factory
- Builder
- Prototype
- Singleton
- 结构型模式
- Adapter
- Bridge
- Composite
- Decorator
- Facade
- Flyweight
- Proxy
- 行为型模式
- Interpreter
- Template Method
- Chain of Responsibility
- Command
- Iterator
- Mediator
- Memento
- Observer
- State
- Strategy
- Visitor
设计模式解决设计问题的多个维度:
- 寻找合适的对象
- 面向对象设计中,最核心的是设计对象,也即是对问题进行分析、抽象建模。
- 决定对象的粒度
- 不同的抽象层级对应着不同粒度的对象,有多个设计模式可应用于各种层级。
- 指定对象接口
- 一个对象的接口是指对象包含的所有操作型构的集合。操作型构是指对象声明的每一个操作,指定了操作名、作为参数的对象和返回值。
- 设计模式可以帮助确定接口的组成成分、接口之间的关系等。
- 描述对象实现
- 针对接口编程,而不是针对实现编程。也就是说,优先考虑接口的设计。
- 运用复用机制
- 同样是代码复用,应当优先使用对象组合,而不是类继承。
- 关联运行时刻和编译时刻的结构
- 运行时刻的程序结构和编译时刻的代码结构,通常差别极大。运行时的结构更多地受到设计者的影响,而不是编程语言。
- 实现支持变化的设计
- 设计模式可以确保系统能以特定方式变化,从而帮助你避免重新设计系统。
选择设计模式的方法
- 考虑设计模式是怎样解决设计问题的
- 浏览模式的意图部分
- 研究模式怎样互相关联
- 研究目的相似的模式
- 检查重新设计的原因
- 考虑你的设计中哪些是可变的
应用设计模式的循序渐进的方法
- 大致浏览一遍模式
- 回头研究结构部分、参与者部分和协作部分
- 看代码示例部分,看看这个模式代码形式的具体例子
- 选择模式参与者的名字,使它们在应用上下文中有意义
- 定义类
- 定义模式中专用于应用的操作名称
- 实现执行模式中责任和协作的操作
廖杰良 - 2019-3-11