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

Static or new instance for every object?

我看到一些代码看起来像

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 变种。 (这是 class A 的所有对象的默认设置)对于 class A 的每个对象,我们只为 class [=13 的大对象使用大量内存=],也许让 C c 静态更好?我们将为整个 class 创建 class C 的一个实例,并将其用于 class 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);
}

}

我认为这是更好的方法,也许我错了。请多多指教。

该问题的答案取决于应用程序的逻辑and/orA 应该如何处理 C 实例。如果只需要一个特定对象的实例,我建议在 Java https://en.wikipedia.org/wiki/Singleton_pattern .

中使用单例模式

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

如果 C 成员包含所有对象使用的配置选项或数据(如上例所示),因此不会更改,您可以使用单例模式使其可供所有对象访问实例——我认为这很好。

最好的, 朱利安