1

在应用这种模式委托事件模型时,将所有代码放在fire...方法中并从公共方法传递参数是否正确?

像这样

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

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

或者我应该在addBananas方法中使用此示例中的添加到列表部分吗?因为如果我这样做,我将没有机会将香蕉对象“附加”到将传递给侦听器的事件对象,对吗?

4

1 回答 1

3

我会尽可能多addBanana()地加入与实际添加香蕉相关的逻辑。

当我完成后addBanana(),我会调用fireBananaAdded()which 将生成适当的BananaAddedEvent并将其发送到BananaAddedListeners(或只是BananaListeners,无论你有什么。)

将 ADD 逻辑放在 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);
    }
}
于 2011-05-01T18:33:06.093 回答