Estoy tratando de diseñar un marco asíncrono y quería saber qué piensan las personas que son los pros/contras del patrón de devolución de llamada frente al patrón del observador.Callback/Command vs EventListener/Observer Pattern
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);
}
}
Estoy trabajando con un marco que parece utilizar estos dos patrones. El patrón EventListener no es el patrón típico, ya que no tiene una lista de oyentes. Esto puede implementarse fácilmente creando un CompositeListener que tenga su propia semántica sobre la prioridad de los oyentes y cómo manejar la distribución de eventos a cada oyente, p. generando un nuevo hilo para cada oyente vs notificaciones en serie. (De hecho, creo que esta es una buena idea ya que es una buena separación de preocupaciones y es una mejora en el patrón estándar de observador/oyente).
¿Alguna idea de cuándo debe usar cada una?
Thxs.
Para simplificar la devolución de llamada, le recomiendo que utilice las funciones de primera clase. así que es solo 'public void doAsyncWork (Función de devolución de llamada)' – Raynos
Soy nuevo en ambos patrones de diseño, y me confundí mucho con los ejemplos de código. ¿Estás seguro de que estos son los modelos correctos de estos dos patrones, especialmente el patrón Observer? Para mí, la forma en que los escribiste no hace diferencia. No me malinterpretes sin embargo. Agradezco sinceramente su pregunta ya que tengo lo mismo en mente. Solo quiero decirlo. ¡Gracias! – jiu9x9uij