J2ME中的观察者模式

时间:2011-04-09 18:05:11

标签: user-interface java-me observer-pattern

我知道J2ME不支持Observer模式,因为Observer和Observable不在J2ME中。
那么,在J2ME中使用Observer模式有什么工作吗? 我想让一个Thread制作一些逻辑,当它完成它的工作时,通知主线程更新UI。

1 个答案:

答案 0 :(得分:1)

observer / observable模式不需要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);
}