当前位置: 首页 > 网络应用技术

[设计模式]快速理解观察者模式,事实证明还有很多其他名称

时间:2023-03-07 20:18:15 网络应用技术

  我们都遵循一个公共帐户。当该公共帐户发布一篇文章时,每个遵循它的人都会收到消息通知。修改对象后,其对象的依赖项的动作抽象自动将其作为观察者模式通知。

  观察者模式下有四个主要角色:

  主题:观察到的对象的抽象类别,该角色还采用了注册观察者和删除观察者的方法。

  具体主体:特定的观察对象。在示例的开头,公共帐户是一个特定的观察对象。

  观察者:观察者的界面,负责接收观察到的对象更改和更新的状态。

  具体探索者:特定的观察者在示例的开头,每个关注公共帐户的人都是特定的观察者。

  仅仅看这个概念就很难准确地理解这种设计模式在做什么。接下来,您可以通过一个特定示例感受到它。此示例仍然使用文章开始的公共帐户示例。首先定义观察者接口,并负责更新操作。

  上面代码中的主题是一个抽象的观察到对象类。本类定义了添加观察者,删除观察者,通知观察者的方法,并定义了两个获取标题并生成文章的抽象方法:

  然后定义特定的观察对象。这是一个特定的公共帐户,是获取标题和创建文章的抽象方法:

  接下来,创建两个观察者:

  最终通过主要课程进行测试:

  最终操作结果如下:

  根据JDK的Java.util包,观察者和主题对象需要观察观察者模式。观察者对象与我在第三章中的定义非常相似:

  在此软件包中可观察到主题对象的名称,其中包含诸如添加观察者和删除观察者之类的操作。

  观察者模式在不同的方案中仍然具有不同的名称,例如在本文的示例中,观察者模式称为Publish-subscripersource-listener模式,但是无论其如何称呼,其定义都是相同的。