2011-01-31 11 views
0

のは、私は2クラスA.javaB.javaを持っており、そのようなクラスでprivate int aがあるとしましょう:クラスの任意のフィールドの値の変更を見つける方法は?

public class A { 
    private int a; 
} 

と私は私が知っているか、フィールドint aにハンドラをアタッチするクラスBでこのクラスを使用します。 それはすべての非同期呼び出しで値の変化を知ることです。

public class B { 
    private A aClass; 

    public static void main (String ... args) { 
      aClass = new A(); // now the int a; is changed how do I know this 

      // user may call many asynchronous method in class A and I want to know 
      // the changing value of int a; from A class in B class 
    } 
} 

どのデザインパターンを使用しますか?どのようなソリューションを提供していますか? A. Aの観察者が対象であり、Bが観察in this diagramあるとして予め

おかげで、

ヒラル

答えて

1

Observer pattern又はhere

Bは自身を登録します。

「a」が変更されるたびに、notify()は登録されているすべてのオブザーバです。

+0

もっと説明できますか? –

+0

@hilal - 更新された投稿 –

0

クラスAをJavaBeanに変更し、PropertyListenersのサポートを追加することができます。 ただし、まずA()インスタンスに登録する必要があります。

1
public class A { 
    private int a; 
    private B observer; 

    void setA(int i) { 
     a = i; 
     observer.notify(); 
    } 

    void registerObserver(B b) { 
     observer = b; 
    } 
} 

AにBオブジェクトを追加し、Bのメソッドを呼び出します。

関連する問題