0

私の特定の問題は、別のクラスBを含むクラスAがあることです。Bにはいくつかの数値が含まれ、Aにはこれらの数値の合計が含まれます。私がやりたいのは、Bで番号が変更されたときに、クラスAに番号を更新したことを通知して、Aが自分の番号を更新するようにすることです。

例を挙げると、Bに次のものが含まれているとします。

number1 = 7; number2 = 5;

したがって、Aには12が含まれます。

7を9に変更すると、Aには14が含まれるはずです。

ベストプラクティスは何でしょうか?

PS:AにはBが含まれているだけでなく、実際にはDにはCが含まれ、CにはAが含まれ、AにはBが含まれています。

4

2 に答える 2

4

2 つの選択肢があります。

  • 合計を に保存せず、A必要に応じて計算してください。

    class A {
        B b;
    
        ...
    
        public int getTotal() {
            return b.getNumber1() + b.getNumber2();
        }
    }
    
  • または、Aオブザーバーになって の変化に耳を傾けますB

    class A implements ChangeListener {
        B b;
        int total = 0;
    
        public A() {
            b = new B();
            b.addChangeListener(this);
        }
    
        @Override
        public void stateChanged(ChangeEvent ce) {
            // recompute total
        }
    }
    

    このアプローチは通常、オブザーバー パターンと呼ばれます。

于 2012-07-29T14:40:52.593 に答える
1

1.通称Publisher-Subscriberパタパタを使います。Observer Pattern

2.変数の値をポーリングするスレッドを作成することによっても実行できます。行われた変更は、指定した方法で処理されます。

于 2012-07-29T14:44:52.483 に答える