Sobes.tech
Junior — Middle

Кои подходи и техники осигуряват спазването на принципа за инверсия на зависимостите при проектирането на системата?

sobes.tech AI

Отговор от AI

Принципът на обръщане на зависимостите (Dependency Inversion Principle) в системното проектиране се постига чрез следните подходи и техники:

  • Използване на абстракции вместо конкретни реализации. Класовете трябва да зависят от интерфейси или абстрактни класове, а не от конкретни класове.
  • Внедряване на зависимости (Dependency Injection). Зависимостите се предават на класа отвън (чрез конструктор, свойства или методи), а не се създават вътре в него.
  • Обратна връзка на управлението (IoC). Контролът върху създаването и свързването на обекти се прехвърля към външен контейнер или рамка.

Пример на C# с внедряване на зависимости:

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; // зависимостта се предава отвън
    }

    public void CreateUser(string name)
    {
        // логика за създаване на потребител
        _logger.Log($"Потребител {name} е създаден.");
    }
}

Този подход улеснява тестването, разширяемостта и поддръжката на кода.