在应用此模式委派事件模型时,将所有代码放在fire...
方法中并从公共方法传递参数是否正确?
喜欢这个
public void addBananas(Banana banana) {
fireBananaAdded(banana);
}
private void fireBananaAdded(Banana banana) {
//Create event etc and add banana to list here
}
或者,我应该在addBananas
方法中使用此示例中的添加到列表部分吗?因为如果我这样做,我将没有机会将香蕉对象“附加”到将传递给侦听器的事件对象,对吗?
答案 0 :(得分:3)
我会在addBanana()
中添加与实际添加香蕉有关的逻辑。
当我完成addBanana()
后,我会致电fireBananaAdded()
,生成相应的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);
}
}