依赖和组合之间的区别?

Difference between dependency and composition?(依赖和组合之间的区别?)
本文介绍了依赖和组合之间的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

此处的定义

依赖

一个类的结构或行为的变化会影响其他相关的类,那么这两个类之间存在依赖关系.它需要不一样,反之亦然.当一个类包含另一个类时发生这种情况.

Change in structure or behaviour of a class affects the other related class, then there is a dependency between those two classes. It need not be the same vice-versa. When one class contains the other class it this happens.

作曲

组合是聚合的一种特殊情况.在更具体的方式,受限聚合称为组合.当一个物体包含另一个对象,如果包含的对象不存在不存在容器对象,则称为作文.

Composition is a special case of aggregation. In a more specific manner, a restricted aggregation is called composition. When an object contains the other object, if the contained object cannot exist without the existence of container object, then it is called composition.

此处 和 这里

依赖

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();
  }
}

推荐答案

可以看出两个构造函数的区别:

The difference can be seen in the two constructors:

  • 依赖:Address对象来自外部,它被分配到别的地方.这意味着 AddressEmployee 对象是分开存在的,并且只是相互依赖.

  • Dependency: The Address object comes from outside, it's allocated somewhere else. This means that the Address and Employee objects exists separately, and only depend on each other.

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

Composition: Here you see that a new Engine is created inside Car. The Engine object is part of the Car. This means that a Car is composed of an Engine.

这篇关于依赖和组合之间的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
Insert a position in a linked list Java(在链接列表中插入位置Java)
Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
printing nodes from a singly-linked list(打印单链接列表中的节点)
Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)