这是聚合吗?

2023-11-29

我有以下代码

 public static void main(String[] args) {
    Engine engine = new Engine("This Engine!");
    Car b = new Car(engine);

    b = null;
}

这是聚合吗?我一直认为聚合是指即使另一个类被“破坏”,某些东西仍然可以“生存”......例如汽车和引擎。如果我删除 Car 实例,Engine 仍然可以存在。

它是否正确?


首先,我想说,当你这样做时,你的代码看起来会更好

Car b = new Car();
b.setEngine(engine);

看起来会更好。

那么关于你的聚合思维,是的,你是对的。 “不知何故”。但如果你真的将你的“对象”细粒度地分割的话。我的意思是,如果汽车没有发动机,你还会拥有它吗? :)

我实际上会看到汽车的本来面目我认为更多的是汽车和司机的聚合。如果汽车损坏,您仍然有司机。如果司机死了,你仍然拥有一辆汽车。

From uml关于聚合:

聚合是“has a”关联关系的变体;聚合比关联更具体。它是代表部分-整体或部分-部分关系的关联。作为关联的一种类型,聚合可以被命名并具有与关联相同的装饰。然而,聚合不能涉及两个以上的类;它必须是二元关联。

当一个类是其他类的集合或容器,但所包含的类对容器没有很强的生命周期依赖性时,可能会发生聚合。当容器被销毁时,容器中的内容不会自动销毁。

组合/聚合

另一种与聚合相混淆的关系是组合。当聚合描述“具有”关系时,组合则执行“包含/部分”关系。正如我所说,通常情况下,发动机是汽车对象(组合)的一部分。 Car 对象有一个 Driver(聚合)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

这是聚合吗? 的相关文章

随机推荐

  • 该应用程序不允许查询方案 XYZ://

    您可能认为这是一个重复的问题 但事实并非如此 我完全知道有关该问题的所有答案canOpenURL及其在 iOS 9 上的注意事项 但这是我的问题 我正在尝试检查我的设备上是否安装了特定的应用程序 均由我开发 我已宣布该计划AppA as
  • 在 Python 中下载文件

    import urllib2 sys if len sys argv 3 print Usage download py
  • 为 iOS 模拟器构建,但链接框架“****.framework”是为 iOS 构建的

    我无法再在模拟器上运行我的应用程序 网上建议我编辑我的project pbxproj 但这似乎不起作用 如何重新获得在模拟器上运行项目的能力 并仍然能够在设备上执行此操作 我正在开发另一个项目 该项目使用许多相同的框架 但它在模拟器上运行
  • 存档时链接器命令失败

    我想要archiveReact Native 项目用户使用最新的 Xcode 但总是失败 因为链接器命令失败 当我跑步时xcodebuild verbose Ld命令 那么错误是这样的 ld file not found build xxx
  • 合并时不会出现空格冲突

    我遇到了一个问题 其中一个大型提交更改了大约一千行代码 删除了行尾的空格并删除了制表符之前的空格 该项目还有大约 50 个拉取请求 当我的提交被合并时 所有这些请求都会发生冲突 有没有什么方法可以设置 git 以便在合并未来的提交时 它会忽
  • 带前导零的数字的反转

    我们如何反转 number 中带有前导零的数字 例如 如果输入是004 输出应该是 400 我写了下面的程序 但它仅在输入中没有前导零时才有效 int num cout lt lt Enter number lt
  • Karate API - Hello World 示例,但 POST (GraphQL) 创建/检索用户

    我的场景中有两个 graphQL 帖子 就像 Hello World 示例一样 我想创建一个用户 API createUser 然后检索该用户 API getUser 以运行断言 我不确定它是否是 graphQL Post 查询让我绊倒的
  • Swift:将符合 FloatingPoint 的值转换为 Double

    我正在编写浮点协议的扩展 我想以任何可能的方式将其转换为 Double extension FloatingPoint var toDouble Double return Double exactly self 0 compile err
  • 如何从媒体存储中删除单个文件?

    这段代码有效 getActivity getContentResolver delete MediaStore Audio Media EXTERNAL CONTEN T URI TITLE songdetails get index so
  • 将容器从 ACR 部署到 AKS

    我有一个容器 其中有一个非常简单的 Web 应用程序 已上传到 Azure 容器注册表 我创建了一个 AKS 集群 现在我想将容器部署到 AKS 中 我找到了许多关于此的教程 但它们似乎都引用了 YAML 文件 而这些文件的解释很少或根本没
  • java - 比较月份和年份的两个日期值

    我需要匹配两个日期 如果它们的月份 年份相同 我应该返回 true 否则返回 false 根据我的搜索 我找到了以下解决方案 还有其他更好的方法来进行这种比较吗 Calendar cal1 Calendar getInstance Cale
  • 如何使用带通配符的 AzureSearch

    我想搜索名称为 14009 00080300 的字段 并且希望仅搜索其中的一部分 例如 14009 000803 时获得命中 使用这段代码我没有得到任何点击 search 14009 000803 count true top 10 有没有
  • SharedSecrets机制是如何工作的?

    jdk internal misc SharedSecrets自我描述为 共享秘密 的存储库 这是一种机制 调用另一个包中的实现私有方法而不需要 使用反射 包私有类实现了一个公共类 接口并提供调用包私有方法的能力 在该包内 实现该接口的对象
  • Visual Studio Express 2012 for Desktop 中没有 Metro 项目模板?

    两个下载页面桌面版 and 对于 Windows 8提供相同的 Web 安装程序 名为 Visual Studio Express 2012 for Windows Desktop 我安装了它 这是它的 新项目 窗口 In 本教程页面 它说
  • 如何使用 Accessstoken 通过图 api 向 Facebook 好友发送消息

    任何人都可以帮助我使用 graph api 向 Facebook 好友发送消息 I tried response facebook gt call api me feed post to john message You have a Te
  • Visual Studio:如何显示从基类继承的所有类?

    在 Visual Studio 中 如何显示从基类继承的所有类 例如 在 ASP NET MVC 中有几个 动作结果 类型 它们都继承 实现基类ActionResult 看起来除非你只是 知道 View and Json有效ActionRe
  • GZip 压缩在 IIS 7.5 上不起作用

    我试图在 IIS 下支持静态文件的 GZip 压缩 默认情况下应该启用 但没有 但到目前为止还没有工作 这是下面的部分
  • 如何在 Java 中通过引用传递可变参数

    我正在编写一个方法 该方法接收任意数量的参数并返回修改后的参数 我尝试过使用 varargs 但它不起作用 在这里您可以看到代码的简化版本 public static void main String args String hello h
  • 为 Flexbox 列表设置固定间距

    i noticed that on my firefox the distance between the bottom of the website and the list for links terms about is really
  • 这是聚合吗?

    我有以下代码 public static void main String args Engine engine new Engine This Engine Car b new Car engine b null 这是聚合吗 我一直认为聚