用户界面- J2ME中的观察者模式



我知道J2ME不支持观察者模式,因为观察者和可观察对象不在J2ME中。
那么,在J2ME中是否有使用观察者模式的方法呢?我想让一个线程做一些逻辑,当它完成它的工作通知主线程更新UI。

观察者/可观察对象模式不需要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);
}

相关内容

  • 没有找到相关文章

最新更新