gpt4 book ai didi

java - java 中的编码组合

转载 作者:行者123 更新时间:2023-12-02 11:07:51 25 4
gpt4 key购买 nike

组合是整体/部分的关系。对组合关系进行编码的常见方法是在组合(整体)对象的构造函数中创建部​​分对象。 java 中的示例:

public class Car {

private String brand;
private ArrayList<Tire> theFourTires = new ArrayList<Tire>();

public Car(String brand)
{
this.brand = brand;
for (int i = 1; i < 5;i ++)
{
// here the "composition" relationship
theFourTires.add(new Tire());
}
}

当我们想要决定哪些对象将成为零件时,我们可以使用 add ... 方法将零件对象添加到组合中。您必须遵守此规则(UML 规范):零件对象不能共享(由另一个对象引用,复合对象除外)。因此,我认为,当您调用 add 方法时,最好不要在调用 add 方法的方法中引用零件对象,就像在 Car 类中这样:

public void addPart(CarParts aPart)
{
this.parts.add(aPart);
}

从另一个对象调用add方法:

Car c = new Car("Ford Torino");
c.addPart(new Tire());

而不是

Tire t = new Tire();
c.addPart(t);

因为在这种情况下,实例是通过引用共享的,即使时间很短,并且组合关系变成了聚合。在这种情况下,您可以调用 t 对象上的方法并违反零件对象的封装。零件对象必须仅由组合管理。你怎么看待这件事 ?感谢世界!

最佳答案

我认为这根本不重要,因为只要你有一个 getter 来访问你的 4 个轮胎,你就可以获得对 Tire 对象的引用,该对象不受汽车了。

由于 Java 中没有 delete 运算符,Car 对象不可能删除它链接到的 4 个 Tire 对象,因此不需要组合类型的关系,并且不可能以代码方式实现它。

关于java - java 中的编码组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50813171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com