在Android中,观察者模式可以通过使用Java的内置观察者模式实现,也可以自己手动实现。
方法一:使用内置观察者模式
具体代码实现如下:
import java.util.Observable;
import java.util.Observer;
// 被观察者类
class MyObservable extends Observable {
public void doSomething() {
// do something
setChanged();
notifyObservers();
}
}
// 观察者类
class MyObserver implements Observer {
@Override
public void update(Observable observable, Object arg) {
// 处理被观察者通知的事件
}
}
// 在需要监听事件的地方
MyObservable observable = new MyObservable();
observable.addObserver(new MyObserver());
observable.doSomething();
方法二:手动实现观察者模式
具体代码实现如下:
// 被观察者接口
interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
// 观察者接口
interface Observer {
void update();
}
// 被观察者实现
class MySubject implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
// 观察者实现
class MyObserver implements Observer {
@Override
public void update() {
// 处理被观察者通知的事件
}
}
// 在需要监听事件的地方
MySubject subject = new MySubject();
subject.registerObserver(new MyObserver());
subject.notifyObservers();
以上两种方法都可以实现观察者模式,具体使用哪种方法取决于具体需求。