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
startFoo
ci 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.