- 一个目标:管理变化,提高复用
- 两种手段:分解,抽象
- 八大原则
- 所有模式UML图的类名改为A, B ...,方法名改为F1(), F2()...
- 三种模型
- 继承和组合对象的内存模型一样
- 组合对象缺乏变化,组合指针具备灵活性
- 设计模式中多用组合指针(指针指向多态对象,表达灵活性,可用B1, B2...等子类替换B)
- 关注稳定点和变化点
- 一个模式的缺点就是它的稳定点
- 没有稳定点,就无法用模式;没有变化点,就没必要用模式
- 一个正常的软件,总是既有变化又有稳定
- 什么时候不用模式
- 代码可读性很差时
- 需求理解还很浅时(软件的第一版)
- 变化没有显现时
- 不是系统的关键依赖点时(关键点优先用)
- 项目没有复用价值时(外包软件)
- 项目将要发布时(重构有代价)
- 经验
- 不要为模式而模式
- 关注抽象类 & 接口
- 理清变化点和稳定点
- 审视依赖关系
- 要有Framework和Application的区隔思维(开车和造车)
- 良好设计是演化的结果
- 成长之路
- 手中无剑,心中无剑:见模式而不知
- 手中有剑,心中无剑:可以识别模式,作为开发人员使用模式(的扩展点)
- 手中有剑,心中有剑:作为框架开发人员为应用设计某些模式
- 手中无剑,心中有剑:忘掉模式,只有原则