0
我知道J2ME中不支持Observer模式,因为Observer和Observable不在J2ME中。
那么,在J2ME中使用Observer模式有什么解决方法吗? 我想做一个线程做出一些逻辑,当它完成它的工作时通知主线程更新UI。J2ME中的观察者模式
我知道J2ME中不支持Observer模式,因为Observer和Observable不在J2ME中。
那么,在J2ME中使用Observer模式有什么解决方法吗? 我想做一个线程做出一些逻辑,当它完成它的工作时通知主线程更新UI。J2ME中的观察者模式
观察者/可观察模式不需要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);
}