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

多个主体调用一个观察者的观察者模式

经佐
2023-03-14

我试图用java制作一个简单的马里奥游戏。因此,我需要一个监听器,用于杀死goomba(Mario中的主要敌人)。经过一番研究之后,我研究了观察者模式

public interface GoombaDeathListener {
    void onGoombaDeath(Goomba goomba);
}
public class Player extends Entity implements GoombaDeathListener {
    @Override
    public void onGoombaDeath(Goomba goomba) {. . .}
}

我还创建了一个Goomba

public class Goomba extends Entity {
    ArrayList<GoombaDeathListener> deathListeners = new ArrayList<>();

    public void onDeath() {
        for (GoombaDeathListener listener : deathListeners) {
            listener.onGoombaDeath(this);  
        }
    }
}

我相信(不确定我是否完全理解了这一点)这使得Goomba成为Observer,并且我需要多个Goomba,这意味着我将有多个GoombadeAthListenersArrayLists

所以我有两个问题:我对观察者模式有什么不了解,以及如何让多个主体(goomba)在死亡时调用ongoombadeath(this)

共有1个答案

龙飞
2023-03-14

我对观察者模式有什么不明白的

您的GoobmadeAthListener是观察者。它在可观察的goomba上观察事件。

您可能想在这里查看更详细的解释:https://stackoverflow.com/a/13744816/340088

每个goomba(可观察的)都必须有一个对观察者列表的引用。您很可能希望在中间引入一个类,类似于GoombaObservers,它管理感兴趣的Observers的列表。它将提供一个类似notifygoombadeath()的方法,该方法在内部执行调用ongoombadeath()的循环。

您可能还想了解Java在Java.util.Observable中已经提供了什么。

 类似资料:
  • 是否有一种设计模式可以形成一个“复合”观察者/可观察者? 我的意思是我有一个可观察的,它在某个变化时通知它的监听器。 每个监听器也是一个可观察的,并通知它自己的监听器(在某个动作上,它做了哪个动作是由第一个可观察的通知触发的)。 这种观察者/可观察的“链接”作为设计是可以的,还是有一个标准的模式?

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

  • 观察者模式是软件设计模式的一种。在此种模式中,一个目标对象管理所有相依于它的观察者对象,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实时事件处理系统。 定义一个目标构造函数,并实现绑定、解绑和触发等方法: function Subject() { this.events = {}; this.count = 0; }​ Subj