Skip to content

详细设计基础

详细设计的出发点

  • 需求开发的结果:需求规格说明和需求分析模型
  • 软件体系结构的结果:软件体系结构设计方案和原型

面向对象设计

面向对象设计的过程 重点

  1. 建立设计模型,通过职责建立静态设计模型,通过协作建立动态设计模型。
    1. 明确抽象类的职责与关系,并添加辅助类(职责)
    2. 明确抽象对象之间的协作与对象的创建,并选择合适的控制风格(协作)
  2. 设计模型重构
    1. 高内聚低耦合(模块化思想)
    2. 隐藏职责与变更(信息隐藏思想)
    3. 利用设计模式重构

通过职责建立静态设计模型

  • 明确抽象类之间的关系
  • 添加辅助类来完善概念类不能实现的功能

类之间的关系 重点

类之间的关系表达了相应职责的划分和组合,它们有绝对的强弱关系,即

<<<<

具体的关系如下表

关系关系短语关系解释图示
依赖use被依赖的对象作为一种工具使用,其引用不被持有。Screen Shot 2024-06-19 at 10.22.58 AM
关联have某个对象长期持有另一个对象的引用,但并没有其他任何强制性的约束。Screen Shot 2024-06-19 at 10.25.13 AM
聚合own暗含存在集合的从属关系,但被聚合的对象还可以再被别的对象关联。Screen Shot 2024-06-19 at 10.27.18 AM
组合be a part of有生命期的约束。被包含对象可以再被其他对象关联,但不能再与其他对象组合Screen Shot 2024-06-19 at 10.30.26 AM
继承be子类继承父类的全部接口和实现Screen Shot 2024-06-19 at 10.32.24 AM
实现implement实现接口中的全部方法Screen Shot 2024-06-19 at 10.33.15 AM

通过协作建立动态设计模型 重点

明确抽象对象之间的协作

协作的设计原则主要有以下两点

  • 从小到大,将对象的小职责聚合形成大职责;
  • 从大到小,将大职责分配给各个小对象。

我们可以使用前文需求分析中的顺序图来进行设计。

明确对象的创建

一般来说,对象的创建可以按照下表来考虑

Screen Shot 2024-06-19 at 10.50.35 AM

选择合适的控制风格

控制风格决定了如何来做职责分配的决策。一般来说,有三种独立的控制风格:集中式、委托式和分散式。这三种控制风格如下图所示

Screen Shot 2024-06-19 at 10.53.33 AM

结构化设计

TODO