как найти значение изменения какого-либо поля класса? - PullRequest
0 голосов
/ 31 января 2011

Допустим, у меня есть 2 класса A.java и B.java, и в классе A есть private int a:

public class A {
    private int a;
}

, и я использую этот класс в классе B, который я хочу знатьили прикрепить обработчик к полю int a;чтобы знать, что это значение меняется в каждом асинхронном вызове.Позвольте мне подробнее объяснить:

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
     }
}

Какой шаблон дизайна мне использовать?Какое решение вы предлагаете?

Заранее спасибо,
hilal

Ответы [ 3 ]

1 голос
/ 31 января 2011
public class A {
    private int a;
    private B observer;

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

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

Добавить объект B в A и вызвать метод B.

1 голос
/ 31 января 2011

Шаблон наблюдателя или здесь

B регистрируется как наблюдатель A. A является субъектом, а B является наблюдателем in this diagram.

Всякий раз, когда меняется «a», A notify () - все зарегистрированные наблюдатели.

0 голосов
/ 31 января 2011

Вы можете превратить класс A в JavaBean и добавить поддержку PropertyListeners. Однако сначала вы должны зарегистрировать его в своем экземпляре A ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...