Il modello del metodo di fabbrica astrae il processo decisionale dalla classe chiamante. Questo ha diversi vantaggi:
Riutilizzo. Se voglio creare un'istanza in molti posti, non devo ripetere le mie condizioni, quindi quando vengo ad aggiungere una nuova classe, non corro il rischio di perdere uno.
Test delle unità. Posso scrivere 3 test per la fabbrica, per assicurarmi che restituisca i tipi corretti alle condizioni corrette, quindi la mia classe chiamante deve solo essere testata per vedere se chiama la fabbrica e poi i metodi richiesti sulla classe restituita. Non ha bisogno di sapere nulla sull'implementazione della fabbrica stessa o delle lezioni concrete.
Estensibilità. quando qualcuno decide di aggiungere una nuova classe D a questo stabilimento, nessuno dei codici chiamante, né i test di unità o l'implementazione, devono mai essere comunicati. Creiamo semplicemente una nuova classe D ed estendiamo il nostro metodo di produzione. Questa è la definizione stessa di Principi Open-Closed .
È anche possibile creare una nuova classe factory e renderle sostituibili a caldo, se la situazione lo richiede, ad esempio, se si desidera essere in grado di attivare e disattivare la classe D durante il test. Ho incontrato questa situazione solo una volta, ma è stato estremamente utile.
Come è stato detto, il modello di fabbrica non è sempre la strada da percorrere. Ma, ovunque tu veda l'istanza condizionale, dovresti dargli un momento di riflessione.