委托事件模型模式Java

时间:2011-05-01 18:06:03

标签: java design-patterns delegation

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

喜欢这个

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

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

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

1 个答案:

答案 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);
    }
}