Sobes.tech
Junior — Middle

Jakie podejścia i techniki zapewniają przestrzeganie zasady odwrócenia zależności w projektowaniu systemu?

sobes.tech AI

Odpowiedź od AI

Zasada odwrócenia zależności (Dependency Inversion Principle) w projektowaniu systemów osiąga się za pomocą następujących podejść i technik:

  • Użycie abstrakcji zamiast konkretnych implementacji. Klasy powinny zależeć od interfejsów lub klas abstrakcyjnych, a nie od konkretnych klas.
  • Wstrzykiwanie zależności (Dependency Injection). Zależności są przekazywane do klasy z zewnątrz (przez konstruktor, właściwości lub metody), a nie tworzone wewnątrz niej.
  • Inwersja kontroli (IoC). Kontrola nad tworzeniem i łączeniem obiektów jest przekazywana zewnętrznemu kontenerowi lub frameworkowi.

Przykład w C# z wstrzykiwaniem zależności:

public interface ILogger
{
    void Log(string message);
}

public class ConsoleLogger : ILogger
{
    public void Log(string message) => Console.WriteLine(message);
}

public class UserService
{
    private readonly ILogger _logger;

    public UserService(ILogger logger)
    {
        _logger = logger; // zależność przekazywana z zewnątrz
    }

    public void CreateUser(string name)
    {
        // logika tworzenia użytkownika
        _logger.Log($"Użytkownik {name} utworzony.");
    }
}

Takie podejście ułatwia testowanie, rozszerzalność i utrzymanie kodu.