Sto eseguendo il refactoring di un'applicazione PHP e sto provando a fare l' iniezione di dipendenza (DI) il più possibile.
Sento di avere una buona conoscenza di come funziona e posso certamente vedere le mie lezioni diventare molto più snelle e più robuste.
Sto eseguendo il refactoring in modo da poter iniettare una dipendenza piuttosto che creare un nuovo oggetto all'interno della classe, ma a un certo punto dovrò creare alcuni oggetti, ovvero utilizzare la new
parola chiave temuta .
Il problema che ho riscontrato ora è a che punto posso effettivamente creare nuovi oggetti? Sembra che finirò in una classe di alto livello, creando un sacco di nuovi oggetti in quanto non c'è altro posto dove andare. Questo sembra sbagliato.
Ho letto alcuni blog che usano le classi factory per creare tutti gli oggetti, e quindi si inietta la factory in altre classi. È quindi possibile chiamare i metodi factory e factory crea il nuovo oggetto per te.
La mia preoccupazione nel farlo è che ora le mie lezioni di fabbrica saranno new
gratuite! Immagino che potrebbe essere OK dato che sono classi di fabbrica, ma ci sono alcune regole a cui attenersi quando si usano un modello di fabbrica e DI, o sto andando fuori strada?
new
. Naturalmente ci sono alcuni punti di ingresso in cui è necessario chiamare nel contenitore IoC, ma non dovrebbero essercene molti. In genere si configura l'IoC una volta, quindi si richiede la risoluzione di una classe per richiesta. Nel caso di MVC, in genere è il controller.