每个对象的静态或新实例?
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 成员包含所有对象使用的配置选项或数据(如上例所示),因此不会更改,您可以使用单例模式使其可供所有对象访问实例——我认为这很好。
最好的,
朱利安
我看到一些代码看起来像
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 成员包含所有对象使用的配置选项或数据(如上例所示),因此不会更改,您可以使用单例模式使其可供所有对象访问实例——我认为这很好。
最好的, 朱利安