Sto cercando di progettare un quadro asincrona e voleva sapere cosa pensa la gente sono i vantaggi/svantaggi del modello di callback contro il pattern Observer.Richiamata/Comando vs EventListener/Observer modello
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);
}
}
Sto lavorando con un framework che sembra utilizzare entrambi questi modelli. Il pattern EventListener non è il modello tipico in quanto non ha un elenco di listener. Questo può essere facilmente implementato anche creando un CompositeListener che ha i suoi semantica sulla priorità di ascoltatori e come gestire la distribuzione degli eventi per ciascun ascoltatore esempio generazione di un nuovo thread per ogni listener vs notifiche seriali. (In realtà che questa è una buona idea come una buona separazione delle preoccupazioni ed è un miglioramento rispetto al osservatore/ascoltatore modello standard).
Ogni pensiero su quando si dovrebbe utilizzare ciascuno?
Thxs.
Per semplificare il callback, si consiglia di utilizzare le funzioni di prima classe. quindi è solo "public void doAsyncWork (Funzione callback)' – Raynos
Sono nuovo in entrambi i modelli di progettazione e mi sono confuso molto con gli esempi di codice. Sei sicuro che questi siano la demo corretta di questi due pattern, in particolare il pattern Observer? Per me, il modo in cui li hai scritti non fa differenza. Non fraintendermi però. Apprezzo sinceramente la tua domanda dal momento che ho in mente la stessa cosa. Voglio solo tirarlo fuori. Grazie! – jiu9x9uij