观察者模式
2024-01-02 16:55:02
它允许一个对象(称为主题或可观察对象)维护一系列依赖于它的对象(称为观察者),并在自身状态变化时通知这些观察者。这种模式用于建立对象之间的一对多依赖关系,使得一个对象的状态变化能够自动通知所有依赖它的对象。
主要角色:
主题(Subject): 被观察的对象,它维护着一系列观察者对象的引用,提供注册、删除和通知观察者的方法。
观察者(Observer): 依赖于主题状态的对象。当主题状态发生变化时,观察者会收到通知并执行相应的更新。
工作原理:
主题维护了一个观察者列表,并提供了方法用于注册、删除和通知观察者。
观察者通常定义了一个更新方法(比如 update()),主题在状态改变时调用观察者的更新方法来通知它们状态的变化。
我的理解是:
他和发布订阅者模式类似,都是当对象状态发生变化时,由发布者通知订阅者。
public class MyTestDemo implements Callback{
public static void main(String[] args) {
Publisher publisher = new ConcretePublisher();
Subcriber subcriber1 = new ConcreteSubcriber();
Subcriber subcriber2 = new ConcreteSubcriber();
publisher.add(subcriber1);
publisher.add(subcriber2);
publisher.notifyAllSubscriber();
}
}
interface Publisher{
public List<Subcriber> get();
public void add(Subcriber subcriber);
public void notifyAllSubscriber();
}
class ConcretePublisher implements Publisher{
List<Subcriber> lists = new ArrayList<>();
@Override
public List<Subcriber> get() {
return this.lists;
}
@Override
public void add(Subcriber subcriber) {
lists.add(subcriber);
}
@Override
public void notifyAllSubscriber() {
for (int i = 0; i < lists.size(); i++) {
lists.get(i).update();
}
}
}
interface Subcriber{
public void update();
}
class ConcreteSubcriber implements Subcriber{
@Override
public void update() {
System.out.println("事件通知");
}
}
文章来源:https://blog.csdn.net/weixin_44050153/article/details/135343321
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!