UML在代码中的展现
依赖:一个类使用了另外一个类,这种关系是临时的、脆弱的。
如人需要过河,需要船,这时人.过河(船) 中船被当做参数传入,船的实现变化会影响过河方法。
聚合:体现是整体与部分、has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。
如公司与员工,一个员工可以脱离公司到其他公司成为员工,员工也可以单独存在,这里的依赖比较弱。
在代码中:
1 2 3 4 5 6 | class Company{ private staffArray:Staff[] = []; public addStaff(staff:Staff){ this .staffArray.push(staff); } } |
组合:体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;
如人与大脑,大雁与翅膀,大雁类在实例化之前一定要先实例化翅膀,两个类紧密耦合在一起 它们有相同的生命周期 翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在
在代码中:
1 2 3 4 5 6 | class Goose{ public wings:Wings = null ; constructor(){ wings = new Wings(); } } |
关系所表现的强弱程度依次为:组合>聚合>关联>依赖;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?