李建钟老师的视频链接
什么是设计模式
1.可复用
2.面向对象
目标
管理变化,提高复用
什么时候不用模式
- 代码可读性很差时
- 需求理解还很浅时
- 变化没有显现时
- 不是系统的关键依赖点
- 项目没有复用价值时
- 项目将要发布时
经验之谈
- 不要为模式而模式
- 关注抽象类&接口
- 理清变化点和稳定点
- 审视依赖关系
- 要有Framework和Application的区隔思维
- 良好的设计是演化的结果
如何解决复杂性?
- 分解
人们面对复杂性有一个常见的做法:即分而治之,将大问题分解为多个小问题,将复杂问题分解为多个简单问题。(不容易复用,C语言常用的方法之一)
- 例子:绘制形状
每个形状(线、矩形、圆形等)写一个处理类,绘制函数里根据用户设置的形状各自调用对应形状的处理函数。
- 抽象
更高层次来讲,人们处理复杂性有一个通用的技术,即抽象。由于不能掌握全部的复杂对象,我们选择忽视它的非本质细节,而去处理泛化和理想化了的对象模型。
- 例子:绘制形状
对于所有形状,都可抽象表示为“Shape”,泛化为一个“Draw”的对象模型。