Шаблон наблюдателя в J2ME - PullRequest
0 голосов
/ 09 апреля 2011

Я знаю, что шаблон Observer не поддерживается в J2ME, поскольку Observer и Observable не поддерживаются в J2ME.
Итак, есть ли способ использования шаблона Observer в J2ME? Я хочу создать поток, создающий некоторую логику, и когда он завершит свою работу, уведомите основной поток об обновлении пользовательского интерфейса.

1 Ответ

1 голос
/ 09 апреля 2011

Наблюдатель / наблюдаемый шаблон не требует определенных классов из библиотеки Java.Все эти классы реализуют некоторые части шаблона наблюдателя для вас.Вы можете сделать свои собственные классы наблюдаемыми, управляя наблюдателями самостоятельно.Обратите внимание, что следующее не объясняет, как заставить один поток ждать другого - это другая проблема.

Вы можете написать интерфейс слушателя следующим образом:

public interface FooListener {
    void fooChanged(int newValue);
}

Вы можете управлятьнабор слушателей в таком классе:

public class Foo {
    private int value = 0;
    private final Collection<FooListener> listeners = new ArrayList<FooListener>();

    public void addFooListener(FooListener listener) {
        listeners.add(listener);
    }

    public void removeFooListener(FooListener listener) {
        listeners.remove(listener);
    }

    public void change(int newValue) {
        value = newValue();

        for (FooListener l : listeners) {
            l.fooChanged(newValue);
        }
    }

    public int getValue() {
        return value;
    }
}

Вот простой пример реализации слушателя.

public class PrintingFooListener implements FooListener {
    public void fooChanged(int newValue) {
        System.out.println("New Foo value: " + newValue);
    }
}

Следующая программа выдаст New Foo value: 10.

public static void main(String[] args) {
    PrintingFooListener myListener = new PrintingFooListener();
    Foo myFoo = new Foo();
    foo.addFooListener(myListener);
    foo.change(10);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...