当前位置: 首页 > 知识库问答 >
问题:

依赖和组成的区别?

司马辉
2023-03-14

定义取自此处

依赖性

一个类的结构或行为的更改会影响另一个相关的类,那么这两个类之间存在依赖关系。反之亦然。当一个类包含另一个类时,就会发生这种情况。

作文

组合是聚合的一种特例。以更具体的方式,受限聚合称为组合。当一个对象包含另一个对象时,如果包含的对象不能在没有容器对象存在的情况下存在,则称为组合。

这里和这里的Java具体例子

依赖性

class Employee {
    private Address address;

    // constructor 
    public Employee( Address newAddress ) {
        this.address = newAddress;
    }

    public Address getAddress() {
    return this.address;
    }
    public void setAddress( Address newAddress ) {
        this.address = newAddress;
    }
}

作文

final class Car {

  private final Engine engine;

  Car(EngineSpecs specs) {
    engine = new Engine(specs);
  }

  void move() {
    engine.work();
  }
}

共有3个答案

裴俊能
2023-03-14

依赖指的是只在函数范围内使用对象。换句话说,类的实例只存在于包含类的函数(或方法)中,并且在函数退出后被销毁。

您为依赖项提供的示例不是依赖项,因为 Employee 类包含地址的实例,这称为聚合。聚合类似于组合,只是对象也可以存在于使用它的类之外。(它可以位于类范围之外)。在您的示例中,您将地址的副本传递给 Employee 构造函数。但由于它是在 Employee 对象之外创建的,因此地址也可能存在于程序的其他位置。

就像聚合一样,组合是组件对象对整个复合对象可用的地方。这意味着复合对象的所有方法/函数都可以访问组件对象。聚合和组合之间的唯一区别是,在组合中,组件对象只存在于复合对象内部,而不存在于程序中的其他地方。因此,当复合对象被销毁时,给定的组件对象也会被销毁,并且不能存在于其他任何地方。在您的示例中,汽车是一个复合对象,引擎是一个组件,因为引擎的实例只存在于特定的汽车中,而不存在于其他任何地方。

周承天
2023-03-14

简单来说:

为此感谢< code>Marko Topolnik...

> 当一个对象“依赖”另一个对象时,就会发生< li>

依赖关系。无论两个对象之间有无关系,它都可能发生。实际上,一个对象可能甚至不知道另一个对象的存在,然而它们可能是依赖的。例子:生产者-消费者问题。生产者不需要知道消费者的存在,但是它必须做wait()和notify()。所以,“不”,依赖不是关联的子集。

< code>Composition:是一种关联类型,其中“子”对象不能在没有父类的情况下存在。也就是说,如果子对象存在,那么它一定在父对象中,而不在其他地方。

EG:汽车(家长)有燃油喷射系统(儿童)。现在,在车外安装燃油喷射系统是没有意义的(它没有用)。即,没有汽车就不能存在燃油喷射系统。

聚合:在这里,子对象可以存在于父对象之外。汽车有一个司机。司机可以存在于车外。

燕实
2023-03-14

区别可以在两个构造函数中看到:

>

  • 依赖:地址对象来自外部,它被分配到其他地方。这意味着地址员工对象单独存在,并且只相互依赖。

    组合:在这里您可以看到在Car中创建了一个新的EngineEngine对象是Car的一部分。这意味着CarEngine组成。

  •  类似资料:
    • 问题内容: 这里的定义 相依性 一个类的结构或行为的变化会影响另一个相关的类,因此这两个类之间存在依赖关系。反之亦然。当一个类 包含另一个 类时,就会发生这种情况。 组成 组合是聚合的特例。以更具体的方式,受限制的聚合称为合成。当一个对象 包含另一个 对象时,如果所包含的对象在没有容器对象的情况下无法存在,则称为合成。 相依性 组成 问题答案: 可以在两个构造函数中看到差异: 依赖性 :对象来自

    • 我正在努力理解数据依赖和控制依赖之间的区别。 所以我看到的一个例子是: 数据依赖性,例如,指令使用另一条指令创建的数据 控制依赖性,例如,指令等待更新的reg进行比较 我很难理解的是,例如在beq,我等待登记簿更新,但我也依赖于他的数据。 所以我不知道如何知道它们之间的区别。

    • 我有个问题。 在pom.xml中,依赖项包含在两个地方。一个位置可以在标记中,另一个位置可以在标记中。 提前致谢:)

    • 我正在处理另一个关于我的构建的问题。gradle需要理解我的Android项目中的工作区项目依赖关系。我已经使用Java和Android有一段时间了,但我仍然很容易对添加依赖项的所有不同方法感到困惑。一种方法是放一个标签。libs/文件夹中的jar文件。另一种方法是具有工作区项目依赖关系。另一种方法(如果使用Android)是在Android选项菜单中添加项目依赖项?我觉得如果我真的理解了为什么会

    • 本文向大家介绍Spring的IOC和依赖注入之间的区别。,包括了Spring的IOC和依赖注入之间的区别。的使用技巧和注意事项,需要的朋友参考一下 控制反转是一种设计原则,有助于反转对象创建的控制。 根据马丁·福勒(Martin Fowler)的论文,控制反转是程序控制流反转的原理:外部源(框架,服务,其他组件)代替程序控制程序流,而由程序控制流它。就像我们将某些东西插入其他东西一样。他提到了有关

    • # 服务和组件 组件(components), 服务(services) 和依赖(dependencies): 和其他技术一样, Windsor 有一些基础概念你需要理解以便正确的使用它。不要害怕 - 他们可能有吓人复杂的名称和抽象的定义,但是掌握他们十分简单。 服务 :information_source: Windsor中的服务 和 WCF 服务: 术语服务(service)的使用十分泛滥,