- 抽象被觀察者
public abstract class AbstractObservable {
//觀察者列表
private List<IObserver> observerList = new ArrayList<>();
//添加觀察者
public void addObservable(IObserver observer) {
this.observerList.add(observer);
}
//刪除觀察者
public void deleteObservable(IObserver observer) {
this.observerList.remove(observer);
}
//通知所有觀察者
public void notifyObservers(String content) {
for (IObserver observer : this.observerList) {
observer.update(content);
}
}
//業(yè)務邏輯處理
public abstract void doSomething();
}
- 具體被觀察者角色
public class ConcreteObservable extends AbstractObservable {
@Override
public void doSomething() {
//通知觀察者
super.notifyObservers("通知觀察者");
}
}
- 觀察者接口或抽象類
public interface IObserver {
//觀察者更新狀態(tài)
void update(String content);
}
- 觀察者接口或抽象類實現(xiàn)類
public class ConcreteObserver implements IObserver {
@Override
public void update(String content) {
//收到被觀察者發(fā)來的消息
}
}
- 場景使用
//定義觀察者與被觀察者
IObserver observer = new ConcreteObserver();
AbstractObservable observable = new ConcreteObservable();
//添加到被觀察者之中
observable.addObservable(observer);
//事件觸發(fā)
observable.doSomething();
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。