-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クラス全体に対して class のインスタンスを 1 つだけ作成し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);
}

}

私はそれがより良い方法だと思います、おそらく私は間違っています。アドバイスをください。

4

1 に答える 1

2

その質問に対する答えは、アプリケーションのロジックや、A が C インスタンスに対して行うべきことによって異なります。特定のオブジェクトのインスタンスが 1 回だけ必要な場合は、Java https://en.wikipedia.org/wiki/Singleton_patternでシングルトン パターンを使用することをお勧めします。

ただし、クラス A のインスタンスがその C メンバーを変更している場合、上記のアプローチを使用するのはお勧めできません。1 つの A オブジェクトの C メンバーを変更すると、実行される計算に干渉する可能性があるためです。別の A オブジェクトで。

C メンバーにすべてのオブジェクトで使用される構成オプションまたはデータが含まれている場合 (上記の例に示されているように)、変更される可能性はありません。シングルトン パターンを使用して、すべての A インスタンスからアクセスできるようにすることができます。私の意見は大丈夫です。

ベスト、ジュリアン

于 2016-07-11T12:19:39.007 に答える