首页 > 解决方案 > 多个主体调用一个观察者的观察者模式

问题描述

我正在尝试制作一个简单的马里奥游戏java。有了这个,我想要一个listenerGoomba马里奥的主要敌人)被杀的时候。经过一番研究,我调查了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意味着我将拥有多个ArrayListsGoombaDeathListeners

所以我有 2 个问题:我不了解什么,当他们死时Observer Pattern我怎么能有多个Subjects( Goomba) 调用onGoombaDeath(this)

标签: javaobserver-pattern

解决方案


我对观察者模式有什么不了解

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

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

我怎么能让多个主题(Goomba)在他们死时调用 GoombaDeath(this)

那么每个Goomba(Observable)都必须有对观察者列表的引用。很可能您想在中间引入一个类,称为类似GoombaObservers管理感兴趣列表的类Observers。它将提供一种方法,例如notifyGoombaDeath()在内部执行循环调用onGoombaDeath()

您可能还想了解 Java 已经通过java.util.Observable.


推荐阅读