Sobes.tech
Junior — Middle

Jaké přístupy a techniky zajišťují dodržování principu inverze závislostí v návrhu systému?

sobes.tech AI

Odpověď od AI

Princip inverze závislostí (Dependency Inversion Principle) v návrhu systémů je dosažen následujícími přístupy a technikami:

  • Použití abstrakcí namísto konkrétních implementací. Třídy by měly záviset na rozhraních nebo abstraktních třídách, nikoliv na konkrétních třídách.
  • Vkládání závislostí (Dependency Injection). Závislosti jsou předávány třídě zvenčí (přes konstruktor, vlastnosti nebo metody) a nejsou vytvářeny uvnitř třídy.
  • Inverze řízení (IoC). Kontrola nad vytvářením a spojováním objektů je předána externímu kontejneru nebo frameworku.

Příklad v C# s injekcí závislostí:

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; // závislost je předána zvenčí
    }

    public void CreateUser(string name)
    {
        // logika tvorby uživatele
        _logger.Log($"Uživatel {name} byl vytvořen.");
    }
}

Tento přístup usnadňuje testování, rozšiřitelnost a údržbu kódu.