Ho una classe Document e una classe DocumentItem. Un documento crea più DocumentItems.
Mentre il mio progetto si è evoluto, mi sono reso conto che DocumentItem aveva bisogno di una logica "profonda" per visualizzare correttamente, prima controllando un database, poi il web. Il mio codice ha finito per sembrare così:
class DocumentItem
...
function getValue() {
$du= new DocumentUtils();
$possibleValue = $du->LookupValueInDatabaseRecursively();
if (!$possibleValue)
$possibleValue = $du->LookupValueOnWeb();
return $possibleValue;
}
Ciò che non mi piace di questo è che la mia classe DocumentItem deve "sapere" tutto su DocumentUtils e la logica più profonda associata a ottenere questo valore.
C'è un modo per isolare DocumentItem da DocumentUtils e la sua logica?
L'inversione di dipendenza dovrebbe essere utilizzata qui, quindi non abbiamo un "albero" di dipendenze?
Esiste un modello di progettazione migliore per questo?