Я пытаюсь создать асинхронную структуру и хотел бы знать, что люди думают, являются плюсами/минусами шаблона обратного вызова против шаблона наблюдателя.
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, который имеет свою собственную семантику по приоритету слушателей и как обрабатывать распределение событий для каждого слушателя, например. создавая новый поток для каждого прослушивателя и серийных уведомлений. (Я на самом деле думаю, что это хорошая идея, так как это хорошее разделение проблем и улучшение стандартного шаблона наблюдателя/слушателя).
Любые мысли о том, когда вы должны использовать их?
спасибоs.