Junior — Middle
Puteți explica principiul inversiunii dependențelor și importanța sa în proiectarea sistemelor software?
sobes.tech AI
Răspuns de la AI
Principiul inversiunii dependențelor (Dependency Inversion Principle, DIP) este unul dintre cele cinci principii SOLID, care afirmă că:
- Modulele de nivel superior nu trebuie să depindă de modulele de nivel inferior. Ambele trebuie să depindă de abstracții.
- Abstracțiile nu trebuie să depindă de detalii. Detaliile trebuie să depindă de abstracții.
Aceasta înseamnă că, în loc ca o clasă să creeze sau să utilizeze direct implementări concrete ale dependențelor, ea trebuie să funcționeze prin interfețe sau clase abstracte. Acest lucru crește flexibilitatea și testabilitatea codului.
Exemplu în C#:
// Abstracție
public interface IMessageSender
{
void Send(string message);
}
// Implementare concretă
public class EmailSender : IMessageSender
{
public void Send(string message) {
Console.WriteLine($"Trimitere email: {message}");
}
}
// Clasă dependentă de abstracție
public class NotificationService
{
private readonly IMessageSender _messageSender;
public NotificationService(IMessageSender messageSender) {
_messageSender = messageSender;
}
public void Notify(string message) {
_messageSender.Send(message);
}
}
// Utilizare
var emailSender = new EmailSender();
var notification = new NotificationService(emailSender);
notification.Notify("Salut!");
Această abordare permite schimbarea ușoară a implementării de trimitere a mesajelor fără a modifica NotificationService, și facilitează injectarea de mock-uri pentru teste.