gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:40:50 25 4
gpt4 key购买 nike

我正在尝试用java制作一个简单的马里奥游戏。有了这个,我想要一个 listener 来监听 Goomba(《马里奥》中的主要敌人)被杀死的情况。经过一番研究后,我研究了观察者模式

我制作了这个界面

public interface GoombaDeathListener {
void onGoombaDeath(Goomba goomba);
}

接下来,我为我的Player创建了一个

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 成为观察者,并且我想要多个 Goomba 这意味着我有多个 ArrayListsGoombaDeathListeners

所以我有两个问题:我对观察者模式不了解什么,以及我如何拥有多个主题(Goomba)当他们死亡时调用onGoombaDeath(this)

最佳答案

What am I not understanding of the Observer Pattern

您的GoobmaDeathListener是观察者。它正在观察可观察对象(您的 Goomba)上的事件。

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

how can I have multiple Subjects(Goomba) call onGoombaDeath(this) when they die

好吧,每个Goomba(可观察)必须有一个对观察者列表的引用。您很可能想在中间引入一个类,名为 GoombaObservers 之类的类,它管理感兴趣的 Observers 列表。它将提供类似 notifyGoombaDeath() 的方法,该方法在内部循环调用 onGoombaDeath()

您可能还想了解 Java 已提供的开箱即用的功能 java.util.Observable .

关于java - 多个主体调用一个观察者的观察者模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55458883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com