首页 > 解决方案 > 为什么这个对象在没有它的组合类的情况下仍然存在,即使它是组合的

问题描述

我知道在组合中,在里面组合的类,它的对象不应该存在于它的类之外,但是在下面的例子中,Sword类被组合到Unit类中,我仍然可以在没有单元类的情况下独立创建它的对象,就像我在主要,我如何防止Sword对象独立存在?

public class Main {

public static void main(String[] args) {

    Sword sword = new Sword();

}
}

class Sword {
private int a;
}


class Unit {
private String s1;
private Sword s;

void setProperty(String s1, Sword s) {
    this.s1 = s1;
    this.s = s;
}

}

标签: javaoopdesign-patterns

解决方案


如果您不想Sword被其他任何东西访问,您可以将其创建为私有内部类

class Unit
{
    private String s1;
    private Sword s;

    public Unit(String s1)
    {
        this.s1 = s1;
        this.s = new Sword();
    }

    private class Sword
    {
        private int a;
    }
}

推荐阅读