Skip to main content
1.本书的目的
- 设计改良
- 通过折中取舍,使新的设计优于旧的设计
- “优于”的含义
- 程序更容易维护(可读性、可扩展性)
2.开发模型
- 瀑布模型
- 分析 → 设计 → 编码 → 测试 → 维护(易于跟踪,但牵一发而动全身)
- 迭代模型
- 与瀑布相比,可以向上一个步骤回溯(适应变化,但不容易计划和跟踪)
- 原型模型
- 以非正规的方式快速实现,就像打草稿(及早发现问题,但要付出额外工作量)
3.软件危机的原因?
- 根本复杂性
- 软件规模庞大、思想抽象、需求变化快
- 解决方案
- 编程模型、思考方法、工具
- 随社会发展,根本复杂性上升;当解决方案跟不上时,软件危机就爆发了!
4.如何解决软件危机?
- 降低根本复杂性
- 简化业务需求、复用已有的软件
- 改进解决方案
- 改进开发模型,在更抽象的层次上思考,使用更优秀的工具
- 在当前阶段,抽象思考把我们带到了面向对象的层次(面向服务、面向方面!?)
5.面向对象的砖头瓦块
- 数据隐藏在类的内部
- 将功能与数据的依赖关系,限制在类的范围内
- 使用者 → 类的公有接口
- 单向依赖,确保类能够被复用
- 接口精炼,以用户需求为驱动
- 便于理解,且易于复用
- 类表示一个关键抽象
- 单一职责,描述清晰
- 抽象类
- 对类进行分类
- 实现常用的最小接口
- 拷贝、相等性判断、ToString()
6.应用程序布局
7.面向对象的陷阱
- 全能类
- 职责太多
- 泛滥成灾的类
- 职责太散(多个类完成了一个职责) || 系统边界外的类(没意义)