我看到一段代码看起来像
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);
}
}
我认为这是更好的方式,也许我错了。请给我建议。
答案 0 :(得分:2)
该问题的答案取决于应用程序的逻辑和/或A应该对C实例做什么。如果只需要一个特定对象的实例,我建议在Java https://en.wikipedia.org/wiki/Singleton_pattern中使用Singleton模式。
但是,如果A类的实例正在更改其C成员,那么使用上述方法将是一个坏主意,因为通过更改一个A对象上的C成员,您可能会干扰完成的计算使用,或在另一个A对象上。
如果C成员包含所有对象使用的配置选项或数据(如上例所示),因此不会发生变化,您可以使用单例模式使其可供所有A实例访问 - 在我看来没关系。
最佳, 儒略