Я видел некоторый кусок коды выглядитСтатический или новый экземпляр для каждого объекта?
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
вара. (который по умолчанию для всех объектов класса 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);
}
}
Я думаю, что это лучший способ, возможно, я ошибаюсь. Пожалуйста, дайте мне совет.
Последняя сделать что это не распространяется много смысла для меня, если добавить один и тот же экземпляр 'C' на карту для различных ключей, поэтому рассмотрим движение с' Map' в первое место, когда у вас есть только одно значение для нескольких ключей? – SomeJavaGuy
_If_ вы используете статический экземпляр для значений по умолчанию, он должен быть _immutable_, иначе вы можете получить побочные эффекты. 'setAutocreate (true)' и т. д. не выглядит неизменным. – Thomas
Если вы внесете какие-либо изменения в объект c в 'queue1', тогда объекты в 'queue2' и 'queue3' также будут изменены. Если это приемлемо, то ваши статические решения выглядят нормально. – Jeet