
观察者模式解决了当另一个对象(主体)的状态发生变化时自动通知一组对象(观察者)的需求。这在一个对象需要根据另一个对象的更改保持更新的场景中非常有用,例如在事件驱动系统或通知系统中。
观察者模式涉及两个主要组件:
主题维护一个观察者列表,并在其状态发生变化时通过调用其更新方法来通知他们。
观察者模式的一个实际示例是社交媒体通知系统,其中用户(观察者)收到朋友(主题)活动的通知,例如帖子和状态更新。
立即学习“Java免费学习笔记(深入)”;
java
// Observer Interface
public interface Observer {
void update(String message);
}
// Subject Interface
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
// Concrete Subject
public class SocialMediaAccount implements Subject {
private List<Observer> observers = new ArrayList<>();
private String statusUpdate;
@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(statusUpdate);
}
}
public void postUpdate(String status) {
this.statusUpdate = status;
notifyObservers();
}
}
// Concrete Observer
public class Follower implements Observer {
private String name;
public Follower(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.println(name + " received update: " + message);
}
}
// Client Code
public class Client {
public static void main(String[] args) {
SocialMediaAccount account = new SocialMediaAccount();
Observer follower1 = new Follower("Alice");
Observer follower2 = new Follower("Bob");
account.registerObserver(follower1);
account.registerObserver(follower2);
account.postUpdate("Hello, followers!");
account.postUpdate("Check out my new post!");
account.removeObserver(follower1);
account.postUpdate("Another update!");
}
}
以上就是理解 Java 中的观察者设计模式的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号