公开接口以处理活动MQ事件

时间:2014-12-01 06:28:32

标签: java api interface event-handling activemq

我有一个用Java编写的应用程序,它通过ActiveMQ进行通信。 我有一个用Java实现的简单的使用者和生产者,它通过Active MQ接收和发送消息到特定的平台。

我需要为每个定义的事件为第三方提供接口,以便他们可以实现特定的接口来执行特定事件的特定任务。 我正在研究不同类型的接口,我需要知道,如果Tag接口在这种情况下可以提供一些帮助,如果没有,那么我应该使用什么技术来实现这种情况?

1 个答案:

答案 0 :(得分:1)

我真的没有看到tag interface在这里有意义。听起来你想要抛出事件并让观察者做一些事情,这将是observer pattern。您的界面不能为空,因为它必须能够抛出您计划生成的所有事件。应该有一些内部代码使用此接口并在每个侦听器上抛出事件。

例如:

监听器:监听器类包含所有可能的事件。

<强>实施例。 FlipListener:收听硬币翻转。

public interface FlipListener{
    public void flip(final boolean heads);
}

事件生成器:通知所有听众。

<强>实施例。硬币:保留FlipListener的列表,并在每次硬币翻转时调用flip方法。

public abstract class Coin {
    private final ArrayList<FlipListener> listeners = 
        new ArrayList<FlipListener>();

    public void addFlipListener(final FlipListener listener){
        listeners.add(listener);
    }

    public boolean flipCoin(){
        final boolean isHeads = doFlip();
        for(final FlipListener listener : listeners)
            listener.flip(isHeads);

        return isHeads;
    }

    /**
     * Perform the actual coin flip and return the results: 
     * true if heads and false is tails.
     */
    protected abstract boolean doFlip();
}

监听器实施:做一些具有事件知识的事情。

<强>实施例。 StatsListener:通过收听硬币翻转事件来保持统计数据。

public class StatsListener implements FlipListener{
    private int heads = 0;
    private int tails = 0;

    public int heads(){
        return heads;
    }

    public int tails(){
        return tails;
    }

    public void flip(final boolean isHeads){
        if(isHeads)
            ++heads;
        else
            ++tails;
    }
}