私たちはC c
VARを置けば、コードのいくつかの作品はすべてのオブジェクトの静的インスタンスまたは新しいインスタンス?
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;
}}
のように見えました。 (クラスAのすべてのオブジェクトのデフォルトです)クラスA
のオブジェクトごとに、クラスA
のオブジェクトの大量に多くのメモリを使用します。C c
を静的にする方がよいでしょうか?クラス全体に対してクラスC
のインスタンスを1つだけ作成し、それをクラス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);
}
}
のように好きになるでしょう。私に助言してください。
最後の1 doesn'tはあなたが別のキーのマップにC ' 'の同じインスタンスを追加する場合、その理由で' Map'と一緒に行くを検討し、私にはそのあまり意味が最初の場所は複数のキーに対して1つの値しか持たないのですか? – SomeJavaGuy
_If_デフォルトの静的インスタンスを使用すると、それは_immutable_でなければなりません。そうしないと、副作用が発生する可能性があります。 'setAutocreate(true)'などは不変に見えません。 – Thomas
'queue1'のcオブジェクトを変更すると、 'queue2'と 'queue3'のオブジェクトも変更されます。これが受け入れられるならば、あなたの静的な解決策は大丈夫だと思われます。 – Jeet