我正尝试在java
中制作一个简单的Mario游戏。有了这个,我想当listener
(马里奥的主要敌人)被杀死时使用Goomba
。经过一番研究,我研究了Observer Pattern
我做了这个interface
public interface GoombaDeathListener {
void onGoombaDeath(Goomba goomba);
}
接下来,我将自己class
设为Player
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
中有多个GoombaDeathListeners
所以我有2个问题:Observer Pattern
我不了解什么?死时我怎么有多个Subjects
呼叫Goomba
< / p>
答案 0 :(得分:2)
我对观察者模式的不了解
您的GoobmaDeathListener
是观察者。它是在可观察的Goomba
上观察事件。
您可能希望在此处查看更详细的说明: https://stackoverflow.com/a/13744816/340088
我死后如何让多个主题(Goomba)呼叫onGoombaDeath(this)
每个Goomba
(可观察)都必须引用观察者列表。很可能您想在中间引入一个类,称为类似GoombaObservers
的类,该类管理感兴趣的Observers
的列表。它将提供类似notifyGoombaDeath()
的方法,该方法在内部进行循环以调用onGoombaDeath()
。
您可能还想通过java.util.Observable
即时查看Java已经提供的功能。