按行为划分系统
•程序的中心是行为
•不基于行为的系统划分,基本上是严重错误的。
•正是系统的行为为我们提供了第一个关于应该如何划分系统的线索
水蒸气类
•没有任何成员变量、状态
•只是一个调用转换器
•水蒸气类没有存在的必要
虚拟抽象
•抽象是非常微妙的
•对抽象类,多问问:谁使用它们?
•一个仅仅含有抽象方法并且不具有任何使用者的类,完全是一个无用的类
•虚拟抽象类没有存在的必要
上帝类
如何进行软件设计?
•把问题的本质和细节分离
•忘掉所有的小细节,集中关注根本问题
•根本问题是什么?
–如对咖啡机:如何煮咖啡?煮咖啡的水从哪里来?到哪里去?
•根据根本问题
–定大范围的职责——模块/类
–定模块/类之间的关联(交互/消息/行为)
•总的来说,要从行为入手,用抽象思维进行软件设计
关联
•关联是对象之间消息发送到路径
•软件对象之间的关联和物理实体的流向没有任何关系
面向对象设计的本质
•面向对象设计的本质
–高层策略和底层细节隔离