猿问

观察者模式,其中多个受试者调用一个观察者

我正在尝试制作一个简单的马里奥游戏。有了这个,我想要一个当a(马里奥的主要敌人)被杀时。经过一番研究,我研究了javalistenerGoombaObserver Pattern


我做了这个interface


public interface GoombaDeathListener {

    void onGoombaDeath(Goomba goomba);

}

接下来,我让自己成为我的classPlayer


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);  

        }

    }

}

我相信(不确定我是否完全理解这一点)这使得,我想要不止一个,这意味着我会有多个GoombaobserverGoombaArrayListsGoombaDeathListeners


所以我有2个问题:我不理解什么,以及他们死后怎么能有多个()电话Observer PatternSubjectsGoombaonGoombaDeath(this)


眼眸繁星
浏览 69回答 1
1回答

慕村9548890

我不理解观察者模式是什么您是观察者。它是在可观察的可观察物上观察事件,你的.GoobmaDeathListenerGoomba你可能想在这里看一个更详细的解释:https://stackoverflow.com/a/13744816/340088我怎么能有多个受试者(古姆巴)调用古姆巴死亡(这个)当他们死亡时好吧,每个(可观察的)都必须有一个对观察者列表的引用。最有可能的是,您希望在中间引入一个类,称为类似的东西,用于管理感兴趣的列表。它将提供一种方法,该方法在内部执行循环以调用 。GoombaGoombaObserversObserversnotifyGoombaDeath()onGoombaDeath()您可能还想看看 Java 已经通过&nbsp;Java.util.可观察提供了开箱即用的功能。
随时随地看视频慕课网APP

相关分类

Java
我要回答