如何实现关联,聚合,组合

时间:2016-07-02 12:16:37

标签: java associations

我正在阅读这三个概念的理论,它说: 这三者都有关系,聚合和组合是关联类型:

  • 联合没有所有者

  • 另外两位是单身老板。

  • 在聚合中,孩子可以独立存在。如果删除所有者,则不会删除子项。如果删除所有者,则子项仍然存在,并且可以作为子项分配给其他对象。

我这样实现了这个:

public class Aggregation {
    public static void main(String[] args) {

        HardDisk hardDisk = new HardDisk();
        Laptop laptop1 = new Laptop(hardDisk);
        System.out.println(laptop1);
        System.out.println(laptop1.hardDisk);
        laptop1 = null;
        System.gc();
        Laptop laptop2 = new Laptop(hardDisk);
        System.out.println(laptop2);
        System.out.println(laptop2.hardDisk);

    }
}

class HardDisk {
}

class Laptop {
    public HardDisk hardDisk;

    public Laptop(HardDisk hardDisk) {
        this.hardDisk = hardDisk;
    }
}
  • 在组合中,子项是使用parent创建的,并使用parent删除。因此,所有者和孩子的关系在这里是一对一的。

我实现了这样:

public class Composition {
    public static void main(String[] args) {
        House house = new House();

    }
}
class House {
    private final Kitchen kitchen = new Kitchen();
    public Kitchen getKitchen() {
        return kitchen;
    }
}

class Kitchen {
}

这种理解是正确的还是我错过了某些东西。我也是为了聚合和组合而做的。那些我们没有任何所有者的协会怎么样?应该怎么做?另外如果A类引用了B而B引用了A那么它将是什么类型的关联?

0 个答案:

没有答案