多个主题调用一个观察者的观察者模式
Observer Pattern Where Multiple Subjects call one Observer
我正在尝试在 java
中制作一款简单的马里奥游戏。有了这个,我想要一个 listener
,因为 Goomba
(马里奥的主要敌人)被杀死。经过一些研究,我查看了 Observer Pattern
这是我做的interface
public interface GoombaDeathListener {
void onGoombaDeath(Goomba goomba);
}
接下来我为我的Player
做了一个class
public class Player extends Entity implements GoombaDeathListener {
@Override
public void onGoombaDeath(Goomba goomba) {. . .}
}
我也做了一个Goomba
class
public class Goomba extends Entity {
ArrayList<GoombaDeathListener> deathListeners = new ArrayList<>();
public void onDeath() {
for (GoombaDeathListener listener : deathListeners) {
listener.onGoombaDeath(this);
}
}
}
我相信(不确定我是否完全理解这一点)这使得 Goomba
成为 observer
,我想要不止一个 Goomba
这意味着我会有多个 ArrayLists
of GoombaDeathListeners
所以我有 2 个问题:我对 Observer Pattern
有什么不了解的地方,以及我如何让多个 Subjects
(Goomba
) 调用 onGoombaDeath(this)
当他们死
What am I not understanding of the Observer Pattern
您的 GoobmaDeathListener
是观察者。它正在观察可观察对象上的事件,您的 Goomba
。
您可能想在此处查看更详细的说明:
how can I have multiple Subjects(Goomba) call onGoombaDeath(this) when they die
好吧,每个 Goomba
(Observable) 都必须引用观察者列表。您很可能想在中间引入一个 class,称为 GoombaObservers
之类的东西,它管理感兴趣的列表 Observers
。它会提供一个像 notifyGoombaDeath()
这样的方法,它在内部执行循环以调用 onGoombaDeath()
。
您可能还想看看 Java 已经提供了哪些与 java.util.Observable
开箱即用的功能。
我正在尝试在 java
中制作一款简单的马里奥游戏。有了这个,我想要一个 listener
,因为 Goomba
(马里奥的主要敌人)被杀死。经过一些研究,我查看了 Observer Pattern
这是我做的interface
public interface GoombaDeathListener {
void onGoombaDeath(Goomba goomba);
}
接下来我为我的Player
class
public class Player extends Entity implements GoombaDeathListener {
@Override
public void onGoombaDeath(Goomba goomba) {. . .}
}
我也做了一个Goomba
class
public class Goomba extends Entity {
ArrayList<GoombaDeathListener> deathListeners = new ArrayList<>();
public void onDeath() {
for (GoombaDeathListener listener : deathListeners) {
listener.onGoombaDeath(this);
}
}
}
我相信(不确定我是否完全理解这一点)这使得 Goomba
成为 observer
,我想要不止一个 Goomba
这意味着我会有多个 ArrayLists
of GoombaDeathListeners
所以我有 2 个问题:我对 Observer Pattern
有什么不了解的地方,以及我如何让多个 Subjects
(Goomba
) 调用 onGoombaDeath(this)
当他们死
What am I not understanding of the Observer Pattern
您的 GoobmaDeathListener
是观察者。它正在观察可观察对象上的事件,您的 Goomba
。
您可能想在此处查看更详细的说明:
how can I have multiple Subjects(Goomba) call onGoombaDeath(this) when they die
好吧,每个 Goomba
(Observable) 都必须引用观察者列表。您很可能想在中间引入一个 class,称为 GoombaObservers
之类的东西,它管理感兴趣的列表 Observers
。它会提供一个像 notifyGoombaDeath()
这样的方法,它在内部执行循环以调用 onGoombaDeath()
。
您可能还想看看 Java 已经提供了哪些与 java.util.Observable
开箱即用的功能。