在应用此模式的委托事件模型时,将所有代码放入fire...
方法并从public方法传递参数是否正确?
像这样
public void addBananas(Banana banana) {
fireBananaAdded(banana);
}
private void fireBananaAdded(Banana banana) {
//Create event etc and add banana to list here
}
还是应该在本例中的
addBananas
方法中使用“添加到列表”部分?因为如果以这种方式进行操作,我将没有机会将香蕉对象“附加”到将传递给侦听器的事件对象上,对吗? 最佳答案
我会在addBanana()
中尽可能多地添加与实际添加香蕉有关的逻辑。
当我用完addBanana()
时,我会调用fireBananaAdded()
,它将生成适当的BananaAddedEvent
并将其发送到BananaAddedListeners
(或只是BananaListeners
,无论您使用的是哪个)。
将BADNAS逻辑添加到FIRE方法很简单!
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);
}
}