-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 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);
}
}
我認爲這是更好的辦法,也許我錯了。請給我建議。
最後一個doesn't做出多大意義對我來說,如果添加C'的'同一個實例的地圖不同的密鑰,爲什麼要考慮一個'Map'中去當你只有一個值爲多個鍵時,第一個地方? – SomeJavaGuy
如果你使用默認的靜態實例,它應該是_immutable_,否則你可能會產生副作用。 'setAutocreate(true)'雖然看起來不可變。 – Thomas
如果您對'隊列1'中的c對象進行了任何更改,那麼'隊列2'和'隊列3'中的對象也會更改。如果這是可以接受的,那麼你的靜態解決方案就好了。 – Jeet