mobile wallpaper 1mobile wallpaper 2mobile wallpaper 3mobile wallpaper 4
1087 字
3 分钟
结构化设计中包含、扩展、泛化的含义
2026-05-11

结构化设计中包含、扩展、泛化的含义#

在结构化设计(尤其 UML 建模)中,这三种关系用于描述用例或类之间的交互与层次,核心区别在于依赖性质与复用逻辑。


一、包含关系(Include)#

定义#

表示基础用例必须调用被包含用例的功能才能完成自身任务,是强制依赖关系,类似 “主函数调用子函数”。

核心特点#

  • 强制性:基础用例执行时,被包含用例的事件流无条件插入执行
  • 复用性:提取多个用例的公共功能,避免重复建模
  • 独立性:被包含用例可独立存在,基础用例不能脱离被包含用例完成核心流程

表示方法#

  • 构造型:<<include>>
  • 图形:虚线箭头,从基础用例指向被包含用例

典型场景#

  • 所有支付流程都需包含 “身份验证”
  • 所有订单操作都需包含 “日志记录”
  • 提款用例包含 “验证账户余额” 功能

二、扩展关系(Extend)#

定义#

表示扩展用例的行为可在特定条件下,为基础用例添加新功能,是可选增强关系,类似 “插件扩展主程序”。

核心特点#

  • 条件性:仅当满足预设条件时才触发扩展行为
  • 可选性:基础用例可独立完成核心功能,无需扩展用例
  • 扩展性:扩展用例可访问基础用例属性,根据状态判断是否执行
  • 多插入点:可在基础用例多个位置插入扩展逻辑

表示方法#

  • 构造型:<<extend>>
  • 图形:虚线箭头,从扩展用例指向基础用例

典型场景#

  • 预订机票时,仅当行李超重才触发 “购买行李额” 扩展
  • 结算订单时,仅当用户选择优惠券才触发 “使用优惠券” 扩展
  • 基本通话业务上,可扩展呼叫等待、呼叫转移等增值服务

三、泛化关系(Generalization)#

定义#

描述一般与特殊的继承关系,子类(子用例)继承父类(父用例)的所有结构与行为,并可添加新特性或重写原有行为,体现 “is-a” 逻辑。

核心特点#

  • 继承性:子类继承父类全部属性、方法和关系
  • 多态性:任何使用父类的地方都可用子类替代(里氏替换原则)
  • 特化性:子类可扩展新功能或修改父类行为以适配特殊场景

表示方法#

  • 图形:实线空心三角箭头,从子类 / 子用例指向父类 / 父用例

典型场景#

  • 支付用例泛化为微信支付、支付宝支付、银行卡支付等子用例
  • 用户类泛化为普通用户、管理员、VIP 用户等子类
  • 交通工具类泛化为汽车、火车、飞机等子类

四、核心区别对比表#

维度包含关系扩展关系泛化关系
本质强制依赖(必须调用)条件增强(可选触发)继承关系(is-a)
箭头方向基础→被包含扩展→基础子→父
触发条件无条件特定条件无(自动继承)
独立性基础用例依赖被包含用例基础用例可独立存在子类依赖父类,父类可独立
复用目的提取公共功能分离可变行为抽象共性,特化个性
典型场景日志记录、权限验证优惠券使用、增值服务多种支付方式、用户类型

五、应用原则#

  • 包含关系:用于抽取多个用例的必须执行的公共模块,提升复用性
  • 扩展关系:用于分离可选功能,保持基础流程简洁,支持灵活扩展
  • 泛化关系:用于抽象共性特征,构建层次化结构,支持多态与特化实现
分享

如果这篇文章对你有帮助,欢迎分享给更多人!

结构化设计中包含、扩展、泛化的含义
https://www.rumin.top/posts/结构化设计-包含扩展泛化/
作者
Rumin
发布于
2026-05-11
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录

封面
Sample Song
Sample Artist
封面
Sample Song
Sample Artist
0:00 / 0:00