Ho una classe con 3 dipendenze.
WritabbleDBConnection, ReadOnlyDBConnection e un oggetto utility QueryFilter.
Voglio fare Injection del costruttore, quindi la mia classe sarebbe simile a questa.
class PersonDataAccessObject {
public function __construct($dbWrite, $dbRead, $queryFilter) {
// sets to local vars
}
public function A() {} // uses $dbRead
public function B() {} // uses $dbWrite
}
Questo oggetto molto probabilmente verrà istanziato in un factory statico, che sa come recuperare le connessioni DB.
Il problema che vedo è che ogni volta che costruisco questo oggetto ho bisogno di passare tutte le 3 dipendenze, anche se forse solo una delle verrà usata per le operazioni che dovrò fare.
Non mi piace nascondere le mie dipendenze all'interno di una classe di localizzazione di servizi, dal momento che voglio mantenere le mie dipendenze esplicite.
Ci sono soluzioni per questo? O devo vivere con istanze inutilizzate?