Un DiC omoara SOLID.
Pentru un SOLID solid, foloseste DI (dependency inversion) cu injectie manuala a dependintelor. Eu unul prefer via constructor, deoarece atunci vezi clar dependintele, iar atunci cand un constructor devine prea complicat (primeste prea multi parametri):
- mai intai ma gandesc daca nu cumva doi sau mai multi parametri pot fi grupati intr-o alta clasa deoarece reprezinta un concept din application domain
- daca nu si nu, folosesc builder pattern
Din experientele mele, majoritatea se rezolva cu 1, la 2 se ajunge destul de rar (gen 1 data la 100-400 de clase).
DiC il tolerez in afara bibliotecii centrale a aplicatiei (cea care implementeaza application domain, care are business value), ca mijloc rapid de “masacrare” a oricarei biblioteci sau framework in care n-am incredere.
Pentru detalii, vezi raspunsurile de pe un alt topic: