[英]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
我如何讓多個Subjects
( Goomba
)呼叫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.