当前位置: 首页 > 知识库问答 >
问题:

如果预先知道订阅者,我应该使用观察者模式吗?[关闭]

宰父远
2023-03-14

但是,如果开发人员在编译时知道订阅服务器列表,并且我想执行单元测试,我似乎仍然不确定我是否应该支持使用这种模式。

假设在我的游戏中,我的角色进入了一个新的区域。在进入一个新区域时,我希望游戏:

  1. 显示安贵说代码味的沼泽在屏幕中间
  2. 更新任务板以显示特定于此区域的任务
  3. 开始减少我的角色每秒5的血量,因为该区域有难闻的气味,并增加10的MP,因为在那里感觉很好

但是,关于如何对观察者模式进行单元测试的帖子建议我可以进行测试,以确保(1)事件被很好地订阅和取消订阅,以及(2)每个被订阅的方法都独立地发挥作用。所以我不太确定这一点。

另一方面,我似乎也相信,当一个类包含其构造html" target="_blank">函数的所有引用作为其类变量时,通过查看类变量就更容易理解一个类在多大程度上负责。

现在,当我想扩展Mapenter的效果时,问题来了。假设除了我计划的三个效果之外,我现在还想添加一个新功能:

这种方法的一大优点是,现在可以非常容易地向Mapenter添加任何新的想法。向事件添加/移除方法就像添加代码行一样简单。Mapenter现在不必担心在其构造函数中取N个参数。

在这里,我应用了观察者模式,尽管我知道谁将在编译时监听这个事件,这意味着我确实可以在这里不使用观察者模式来实现这一点。

我担心的是:

    null

共有1个答案

楚良平
2023-03-14

决定取决于你的情况,我认为了解观察者和发布者/订阅者之间的差异是很重要的。

观察者大多以同步方式实现,当某个事件发生时,观察者调用其所有观察者的适当方法。发布者/订阅者模式大多以异步方式实现(通过消息队列)。

在观察者/可观察者模式中,观察者知道可观察者。然而,在Publisher/Subscriber中,发布服务器和订阅服务器不需要相互了解。它们只是在消息队列的帮助下进行通信。

 类似资料:
  • 本文向大家介绍JavaScript设计模式之观察者模式(发布者-订阅者模式),包括了JavaScript设计模式之观察者模式(发布者-订阅者模式)的使用技巧和注意事项,需要的朋友参考一下 观察者模式( 又叫发布者-订阅者模式 )应该是最常用的模式之一. 在很多语言里都得到大量应用. 包括我们平时接触的dom事件. 也是js和dom之间实现的一种观察者模式. 只要订阅了div的click事件. 当点

  • 我发现了这个例子: 但是我不明白为什么我们需要和?和方法是用于什么?

  • 主要内容:介绍,实现,Subject.java,Observer.java,BinaryObserver.java,OctalObserver.java,HexaObserver.java,ObserverPatternDemo.java当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知依赖它的对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知

  • 观察者模式 亦称: 事件订阅者、监听者、Event-Subscriber、Listener、Observer 意图 观察者模式是一种行为设计模式, 允许你定义一种订阅机制, 可在对象事件发生时通知多个 “观察” 该对象的其他对象。 问题 假如你有两种类型的对象: ​ 顾客和 商店 。 顾客对某个特定品牌的产品非常感兴趣 (例如最新型号的 iPhone 手机), 而该产品很快将会在商店里出售。 顾客

  • 一、定义 观察者模式(发布-订阅模式):其定义对象间一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知。 在JavaScript中,一般使用事件模型来替代传统的观察者模式。 好处: (1)可广泛应用于异步编程中,是一种替代传递回调函数的方案。 (2)可取代对象之间硬编码的通知机制,一个对象不用再显示地调用另外一个对象的某个接口。两对象轻松解耦。 二、DOM事件–观察者

  • 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。 何时使用:一个对象(目标对象)