Progettazione per il consumo di voci di elenco per una struttura a macchina di stato

0

Sto cercando di migliorare questo parser di documenti e c'è un ciclo principale che va su tutti gli elementi principali (chiamiamoli Node s). Ogni passaggio ( Step ) può essere Consume o Ignore il Node che viene passato. Un Step può anche essere avido e consumare più del singolo Node di quello che gli è stato passato. Un Step potrebbe limitare la sua transizione ad altri stati come una macchina a stati. Non riesco a rimuovere Node dall'elenco dei nodi, poiché questo mi porterebbe in raccolta modificata durante l'enumerazione dei problemi e sarebbe difficile accelerare il ciclo principale

Quale design andrebbe bene per questo?

Ecco qualcosa che ho considerato di implementare.

class Node { ... }
class Step 
{
    void Handle(NodeContext);
    ... 
}
class NodeContext
{
     Node Node { get; }
     void Ignore();
     void Consume();
}
    
posta Daniel A. White 16.06.2017 - 20:44
fonte

0 risposte

Leggi altre domande sui tag