观察者模式概述

2023-12-27 15:38:28

观察者模式,它用于建立一种对象与对象之间的依赖关系,
一个对象发生改变将自动通知其他对象,
其他对象将相应做出反应。在观察者模式种,发生改变的对象称为观察目标,
而被通知的对象称为观察者,一个观察目标可以对应多个观察者,
而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,
使得系统易于扩展。

观察者模式(Observer Pattern)定义对象之间的一种一对多依赖关系,
使得每当一个对象状态发生改变时,其相关依赖对象皆得到通知并被自动更新。
观察者模式的别名包括发布-订阅模式、模型-试图模式、
源-监听器模式或从属者模式。观察者模式是一种对象行为模式。
Subject(目标):目标又称为主题,
它是指被观察的对象。在目标中定义了一个观察者集合,
一个观察目标可以接受任意数量的观察者来观察,
它提供一系列方法来增加和删除观察者对象,
同时它定义了通知方法notify()。
目标类可以是接口,也可以是抽象类或具体类。

ConcreteSubject(具体目标):
具体目标是目标类的子类,通常它包含又经常发生改变的数据,
当他的状态发生改变时,向它的各个观察者发出通知;
同时它还实现了在目标类中定义的抽象业务逻辑方法
(如果有的话)。如果无需扩展目标类,则具体目标类可以省略。

Observer观察者:
观察者将对观察目标的改变做出反应,
观察者一般定义为接口,改接口声明了更新数据的方法
update(),因此又称为抽象观察者。

ConcreteObserver具体观察者:
在具体观察者中维护一个指向具体目标对象的引用,
它存储具体观察者的有关状态,
这些状态需要和具体目标的状态保持一致。
它实现了在抽象观察者Observer中定义的
update方法。通常在实现时,可以调用具体目标类的
attach方法将自己添加到目标类的集合中或通过detach()
方法将自己从目标类的集合中删除。

观察模式描述了如何建立对象于对象之间的依赖关系,
以及如何构造满足这种需求的系统。
观察者模式包含观察目标和观察者两类对象,
一个目标可以有任意数目的与之相依赖的观察者,
一旦观察目标的状态发生改变,所有的观察者都将得到通知。
作为对这个通知的响应,每个观察者都将监听观察目标的状态
以使其状态与目标状态同步,这个交互也称为发布-订阅。
Publish-Subject。观察目标是通知的发布者。
它发出通知并不需要知道谁是它的观察者,可以有任意数目的观察者订阅
它并接收通知。

文章来源:https://blog.csdn.net/wcg_jishuo/article/details/135245636
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。