簡體   English   中英

多個主題調用一個觀察者的觀察者模式

[英]Observer Pattern Where Multiple Subjects call one Observer

我試圖用java制作一個簡單的Mario游戲。 有了這個,我想要一個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 ,這意味着我將有多個GoombaDeathListeners ArrayLists

所以我有兩個問題:我對Observer Pattern不了解什么? Goomba我如何讓多個SubjectsGoomba )呼叫onGoombaDeath(this)

我對觀察者模式不了解的地方

您的GoobmaDeathListener是觀察者。 它是在可觀察的Goomba上觀察事件。

您可能需要在此處查看更詳細的說明: https : //stackoverflow.com/a/13744816/340088

他們死后,如何讓多個主題(Goomba)呼叫onGoombaDeath(this)

那么每個Goomba (可觀察到的)都必須有對觀察者列表的引用。 您最有可能想在中間引入一個類,稱為GoombaObservers類的類, GoombaObservers管理感興趣的Observers列表。 它將提供類似於notifyGoombaDeath()的方法,該方法在內部執行循環以調用onGoombaDeath()

您可能還想通過java.util.Observable來查看Java已經提供的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM