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