详细设计基础
详细设计的出发点
- 需求开发的结果:需求规格说明和需求分析模型;
- 软件体系结构的结果:软件体系结构设计方案和原型。
面向对象设计
面向对象设计的过程 重点
- 建立设计模型,通过职责建立静态设计模型,通过协作建立动态设计模型。
- 明确抽象类的职责与关系,并添加辅助类(职责)
- 明确抽象对象之间的协作与对象的创建,并选择合适的控制风格(协作)
- 设计模型重构。
- 高内聚低耦合(模块化思想)
- 隐藏职责与变更(信息隐藏思想)
- 利用设计模式重构
通过职责建立静态设计模型
- 明确抽象类之间的关系
- 添加辅助类来完善概念类不能实现的功能
类之间的关系 重点
类之间的关系表达了相应职责的划分和组合,它们有绝对的强弱关系,即
具体的关系如下表
关系 | 关系短语 | 关系解释 | 图示 |
---|---|---|---|
依赖 | use | 被依赖的对象作为一种工具使用,其引用不被持有。 | |
关联 | have | 某个对象长期持有另一个对象的引用,但并没有其他任何强制性的约束。 | |
聚合 | own | 暗含存在集合的从属关系,但被聚合的对象还可以再被别的对象关联。 | |
组合 | be a part of | 有生命期的约束。被包含对象可以再被其他对象关联,但不能再与其他对象组合。 | |
继承 | be | 子类继承父类的全部接口和实现。 | |
实现 | implement | 实现接口中的全部方法。 |
通过协作建立动态设计模型 重点
明确抽象对象之间的协作
协作的设计原则主要有以下两点
- 从小到大,将对象的小职责聚合形成大职责;
- 从大到小,将大职责分配给各个小对象。
我们可以使用前文需求分析中的顺序图来进行设计。
明确对象的创建
一般来说,对象的创建可以按照下表来考虑
选择合适的控制风格
控制风格决定了如何来做职责分配的决策。一般来说,有三种独立的控制风格:集中式、委托式和分散式。这三种控制风格如下图所示
结构化设计
TODO