面向对象中多个对象之间的关系
当谈到面向对象的设计时,我们经常说面向对象是符合人们对现实世界的思维模式,即人们采用针对非程序设计领域存在的复杂问题的解决方式,来解决软件设计过程中各种错综复杂的关系。利用面向对象设计,特别是采用各种设计模式来解决问题时,会设计多个类,然后创建多个对象,这些对象,有些主要是数据模型,有些则是行为描述占主体。一个设计良好的类,应该是兼顾信息和行为,并且是高内聚。而不同的类之间,应该尽量做到松耦合。
由于我们面对的系统或者需要解决的问题经常是复杂的、高度抽象的,我们创建的多个对象往往是有联系的,通常对象之间的关系可以分为以下几类:
- 继承
具有层次关系或者可以用树状结构来描述对象关系时,可以考虑使用继承,继承的好处是子类可以容易的使用父类的属性和方法,缺点是子类和父类绑定在一起,不利于后期维护。
在UML中,继承通常是使用空心三角+实线来表示。
- 关联
如果A和B有关联,那么说明A内部可能会使用到B,但是A和B本身还是独立的关系,通常B会作为A的成员变量存在。
在UML中,关联通常是使用实线箭头来表示,箭头方向是A指向B。
- 聚合
如果A和B是聚合的,那么说明A和B是“弱拥有”的关系,它们不是独立的关系,但是A和B的生命周期可以使不同的,通常B也是会作为A的成员变量存在。
在UML中,聚合通常是使用空心菱形+实线箭头来表示。
- 组合
如果A和B是组合的,那么说明A和B是“强拥有”的关系,它们不是独立的关系,并且生命周期也是一样的,通常B作为A的成员变量存在,并且在A的构造函数中进行初始化。
在UML中,组合通常是使用实心菱形+实线箭头表示。
- 依赖
如果A和B是依赖的关系,说明B一般不单独使用,它需要在A中才会发挥作用,通常B是作为A中的方法参数存在的。
在UML中依赖通常使用虚线箭头表示。
作者:李潘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通