回调是观察者的具体一个业务实现,其他地方也有回调实现。
观察者设计模式:
- 1、主题(提供注册、解绑观察者、通知观察者)
- 2、观察者(业务方继承3,每一个观察者业务的逻辑不一样)
- 3、观察者接口(规范了要做的事情)
如果这样
代码逻辑
```bash
// 观察者接口
interface Observer {
void update(String message);
}
// 主题类
class Subject {
private List<Observer> observers = new ArrayList<>();
// 注册观察者
public void subscribe(Observer observer) {
observers.add(observer);
}
// 注销观察者
public void unsubscribe(Observer observer) {
observers.remove(observer);
}
// 通知所有观察者
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
// 具体观察者
class ConcreteObserver implements Observer {
@Override
public void update(String message) {
System.out.println("Received message: " + message);
}
}
// 客户端代码
public class ObserverPatternDemo {
public static void main(String[] args) {
Subject subject = new Subject();
Observer observer1 = new ConcreteObserver();
Observer observer2 = new ConcreteObserver();
subject.subscribe(observer1);
subject.subscribe(observer2);
// 当主题状态变化时,通知所有观察者
subject.notifyObservers("State has changed!");
}
}
```