我有侦听传入HTTP消息的线程,我想让其他使用我的代码的开发人员能够使用我随时收到的消息。我在一些移动操作系统中看到你可以实现类并覆盖onRecive函数来接收消息。
这是在这种情况下使用的正确架构吗?如果是的话,我怎么能实施,如果它不是最好的方法。
答案 0 :(得分:1)
您可以拥有另一个开发者可以实现的接口,并在您的代码中注册,以便在收到新消息等时收到通知。有很多方法可以实现。
您可以使用内置的Observable类。或者你可以做这样的事情。
public interface Listener<T> {
public void onEvent(T t);
}
public class Listenable<T> {
private final List<Listener<T>> list = new CopyOnWriteArrayList<Listener<T>>();
public void register(Listener<T> listener) {
if (!list.contains(listener)) list.add(listener);
}
public void unregister(Listener<T> listener) {
list.remove(listener);
}
public void onEvent(T t) {
for (Listener<T> tListener : list)
tListener.onEvent(t);
}
}
调用者可以实现Listener接口或提供一个对象。然后它将它与Listenable一起注册。可听者可以通知所有已注册的听众。
答案 1 :(得分:0)
您可以拥有一个名为MessageListener
的界面:
public interface MessageListener{
void onMessage(String message);
}
您图书馆的用户将创建自己的MessageListeners,并将实现onMessage
方法,该方法定义收到消息时应该执行的操作。他们还会在启动之前使用您的“线程”设置(或注册)此MessageListener。
现在,只要您的线程收到消息,它就会通过调用onMessage
方法通知向其注册的侦听器。