每个对象的静态或新实例?

时间:2016-07-11 12:06:50

标签: java oop static-class

我看到一段代码看起来像

public class A {

 public void doSomething(B b) {
    b.addSometing("queue1", getDefault());
    b.addSometing("queue2", getDefault());
    b.addSometing("queue3", getDefault());
}

private C getDefault() {
    C c = new C();
    c.setAutoCreate(true);
    c.setExired(false);
    c.setDelay(3500);

    return c;
}}

如果我们放C c var。 (对于类A的每个对象,(对于类A的所有对象都是默认值),我们只为类A的大对象使用大量内存,可能最好使C c静态的 ?我们将为整个类只创建一个类C的实例,并将其用于类A的每个对象。如果我们这样做,那么代码就像

public class A {
private static C c = new C();

static {
    c.setAutoCreate(true);
    c.setExired(false);
    c.setDelay(3500);
}

public void doSomething(B b) {
    b.addSometing("queue1", c);
    b.addSometing("queue2", c);
    b.addSometing("queue3", c);
}

}

我认为这是更好的方式,也许我错了。请给我建议。

1 个答案:

答案 0 :(得分:2)

该问题的答案取决于应用程序的逻辑和/或A应该对C实例做什么。如果只需要一个特定对象的实例,我建议在Java https://en.wikipedia.org/wiki/Singleton_pattern中使用Singleton模式。

但是,如果A类的实例正在更改其C成员,那么使用上述方法将是一个坏主意,因为通过更改一个A对象上的C成员,您可能会干扰完成的计算使用,或在另一个A对象上。

如果C成员包含所有对象使用的配置选项或数据(如上例所示),因此不会发生变化,您可以使用单例模式使其可供所有A实例访问 - 在我看来没关系。

最佳,   儒略

相关问题