我正在尝试设计一个异步框架,并想知道人们认为回调模式与观察者模式的优缺点。
Callback pattern:
//example callback
public interface Callback{
public void notify(MethodResult result);
}
//example method
public class Worker{
public void doAsyncWork(Callback callback){
//do work
callback.notify(result);
}
}
//example observer pattern
public interface EventListener{
public void notify(MethodResult result);
}
public class Worker{
private EventListener listener;
public registerEventListener(EventListener listener){
this.listener=listener;
}
public void doAsyncWork(){
//do work
listener.notify(result);
}
}
我正在使用一个似乎同时使用这两种模式的框架。EventListener 模式不是典型的模式,因为它没有侦听器列表。这可以很容易地通过创建一个 CompositeListener 来实现,它在侦听器的优先级上具有自己的语义以及如何处理事件到每个侦听器的分配,例如为每个侦听器与串行通知生成一个新线程。(我实际上认为这是一个好主意,因为它很好地分离了关注点,并且是对标准观察者/听众模式的改进)。
关于什么时候应该使用它们有什么想法吗?
谢谢。