Metodi di fabbrica per convertire un albero di oggetti in un altro

0

Ho un albero di oggetti che ho bisogno di convertire in un albero simile (ma non isomorfo) di altri oggetti e la logica di creazione è piuttosto complessa.

I tipi di oggetto si trovano in una gerarchia in cui solo le foglie non sono astratte e possono essere istanziate. Quindi adesso ho un metodo factory statico in ogni classe che controlla le condizioni necessarie e poi restituisce l'oggetto o null (nel caso dei tipi foglia) o delega la creazione dell'oggetto al giusto metodo di fabbrica dei suoi sotto-tipi (nel caso di un tipo non foglia).

Stavo pensando che potrebbe essere meglio mettere tutta quella logica di creazione in una classe di fabbrica. In particolare, penso che migliorerà la gestione degli errori dato che i metodi nested annidati tendono a ingurgitare ragioni di errore che rendono il debug molto più difficile. E poiché tutto è in un posto, ci sarebbe meno ripetizione delle condizioni necessarie per la creazione di qualche oggetto.

Ma una grande preoccupazione è che mettere tutti i controlli nella classe factory permetterebbe di creare qualche oggetto in uno stato non valido. Ovviamente potrei anche mettere gli stessi controlli in ogni costruttore, ma quella ripetizione renderebbe il tutto inutile.

Che ne pensi? Quali sono i pro / contro di una factory class rispetto ai factory factory nidificati e ai controlli nei costruttori che lanciano?

    
posta Grisu47 26.08.2018 - 21:20
fonte

0 risposte

Leggi altre domande sui tag