2011-05-01 93 views
1

當應用此模式的委託事件模型時,將所有代碼放在fire...方法中並從公共方法傳遞參數是否正確?委派事件模型模式Java

像這樣

public void addBananas(Banana banana) { 
    fireBananaAdded(banana); 
} 

private void fireBananaAdded(Banana banana) { 
    //Create event etc and add banana to list here 
} 

或者我應該有附加在addBananas方法,而不是在這個例子中列出一部分?因爲如果我這樣做,我將不會有機會將香蕉對象「附加」到將傳遞給聽衆的事件對象,對吧?

回答

3

我會在addBanana()中放置儘可能多的邏輯,這與我實際添加香蕉有關。

當我與addBanana()做的,我會打電話fireBananaAdded()這將產生相應的BananaAddedEvent並將其發送到BananaAddedListeners(或只是BananaListeners,無論你有哪些。)

要使添加邏輯在FIRE方法簡直就是BANANAS!

public void addBananas(Banana banana) { 
    if(BananaHolder.hasRoom()) { 
     BananaHolder.add(banana); 
     fireBananaAdded(banana); 
    } 
} 

private void fireBananaAdded(Banana banana) { 
    BananaAddedEvent event = new BananaAddedEvent(banana); 
    for(BananaListener listener : listenersByType(Banana.class)) { 
     listener.bananaAdded(event); 
    } 
} 
+0

我在命名約定中採取了一些自由度,因爲這是爲了這樣做。好吧,我需要停止與雙關語,或人們會認爲我果味。爾加!停下來,發光! – corsiKa 2011-05-01 18:35:50

+0

謝謝你,這很有道理,我最好回到課程的水果籃...... – LuckyLuke 2011-05-01 18:57:38