0
Observer 패턴이 J2ME에서 Observer로 지원되지 않으며 Observable이 J2ME에 없다는 것을 알고 있습니다.
따라서 J2ME에서 Observer 패턴을 사용하는 데 어떤 문제가 있습니까? 스레드를 일부 논리로 만들고 싶습니다. 작업이 끝나면 UI를 업데이트하기 위해 주 스레드에 알립니다.J2ME의 옵저버 패턴
Observer 패턴이 J2ME에서 Observer로 지원되지 않으며 Observable이 J2ME에 없다는 것을 알고 있습니다.
따라서 J2ME에서 Observer 패턴을 사용하는 데 어떤 문제가 있습니까? 스레드를 일부 논리로 만들고 싶습니다. 작업이 끝나면 UI를 업데이트하기 위해 주 스레드에 알립니다.J2ME의 옵저버 패턴
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);
}