-2

我看到一些代码看起来像

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 cvar. (这是 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);
}

}

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

4

1 回答 1

2

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

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

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

最好的,朱利安

于 2016-07-11T12:19:39.007 回答