Sto costruendo un complesso albero di oggetti. Esistono cinque tipi, A
, B
, C
, D
e E
. Esiste una singola istanza di A
, che è il nodo radice. A
ha uno o più B
s come figli, ogni B
ha uno o più C
s come figli e così via. Il formato dati originale è uno stream che consiste di 5 numeri (ID numerici per A
, B
, C
, D
e E
) più i metadati che possono essere associati a ciascuno di essi.
Sto tentando di aggiungere un certo livello di filtraggio al mio albero. Il mio attuale approccio è quello di prendere l'input e passarlo nel costruttore per A
e quindi scorrerlo verso il basso in B
s che A
costrutto e C
s che B
costruisce e così via. Tuttavia, il filtro si verifica in definitiva al livello di E
. Se tutto il E
s per un dato D
non esiste, non voglio creare quel D
. Se C
non ha D
s, non voglio che C
esista.
Il mio pensiero iniziale è di lanciare un'eccezione, ma sembra utilizzare le eccezioni per il controllo del flusso. Sebbene alcune lingue favoriscano le eccezioni, attualmente sto lavorando in Java, dove la tendenza è che le eccezioni siano per condizioni eccezionali. Non penso che non corrispondere a un filtro sia un caso eccezionale.
Quali sono le mie opzioni per garantire che il mio albero finale contenga solo nodi con figli e il filtro sia applicato?