Ho scritto un parser per un certo tipo di file binario con struttura ricorsiva. Ho fatto la sua API per essere simile a SAX, cioè:
- il parser accetta un oggetto di un'interfaccia specifica,
- questa interfaccia ha diversi metodi chiamati come avviene l'analisi:
startFoo(type, name),endFoo(),datum(type, name, value),badEntry(errorMsg), ecc. - ci sono alcune promesse su come vengono chiamati questi callback: ad es. per ogni
startFooci sarà unendFoo, con nidificazione appropriata, ecc.
Ero solito pensare che questa sia una variante di un pattern Visitor. Tuttavia, il pattern visitor non ha più callback, questi callback hanno argomenti diversi e il pattern Visitor non parla di promesse come nell'ultimo punto. Inoltre, in senso stretto, non è una struttura di dati in memoria che viene ripetuta, ma suppongo che questa parte sia meno importante ...
Penso anche che non sia strettamente un modello di Osservatore: non c'è stato da osservare; nessuna registrazione tardiva per la ricezione di eventi (ovvero si ottengono tutti gli eventi di analisi o nessuno, non è possibile iniziare nel mezzo); solo un singolo oggetto è accettato.
Esiste un nome più appropriato per questo modello di progettazione?
EDIT: A quanto ho capito, esistono schemi di progettazione per comunicare in modo rapido e preciso strutture di codice comuni. Tuttavia, se tutto quello che posso dire sulla struttura del codice di cui sopra è che si tratta di un modello di "Strategia" o di un modello di "Osservatore", la comunicazione è inefficiente. Non tutte le implementazioni di pattern "Strategiche" hanno interfacce con più metodi con promesse riguardanti l'ordine in cui sono chiamate, ecc.
Sto cercando un nome o una frase che possa comunicare direttamente l'insieme di condizioni sopra menzionate, o almeno alcune approssimazioni ravvicinate.