1.本书的目的

设计改良
通过折中取舍,使新的设计优于旧的设计
“优于”的含义
程序更容易维护(可读性、可扩展性)

2.开发模型

瀑布模型
分析 → 设计 → 编码 → 测试 → 维护(易于跟踪,但牵一发而动全身)
迭代模型
与瀑布相比,可以向上一个步骤回溯(适应变化,但不容易计划和跟踪)
原型模型
以非正规的方式快速实现,就像打草稿(及早发现问题,但要付出额外工作量)

3.软件危机的原因?

根本复杂性
软件规模庞大、思想抽象、需求变化快
解决方案
编程模型、思考方法、工具
随社会发展,根本复杂性上升;当解决方案跟不上时,软件危机就爆发了!

4.如何解决软件危机?

降低根本复杂性
简化业务需求、复用已有的软件
改进解决方案
改进开发模型,在更抽象的层次上思考,使用更优秀的工具
在当前阶段,抽象思考把我们带到了面向对象的层次(面向服务、面向方面!?)

5.面向对象的砖头瓦块

数据隐藏在类的内部
将功能与数据的依赖关系,限制在类的范围内
使用者 → 类的公有接口
单向依赖,确保类能够被复用
接口精炼,以用户需求为驱动
便于理解,且易于复用
类表示一个关键抽象
单一职责,描述清晰
抽象类
对类进行分类
实现常用的最小接口
拷贝、相等性判断、ToString()

6.应用程序布局

面向过程
集中化控制
面向对象
分布式关联

7.面向对象的陷阱

全能类
职责太多
泛滥成灾的类
职责太散(多个类完成了一个职责) || 系统边界外的类(没意义)

1.