Sobes.tech
Junior — Middle

Magyarázza el a függőséginjektálás elvét a programkódban és annak előnyeit.

sobes.tech MI

Válasz az MI-től

Függőség-injektálás (Dependency Injection, DI) egy tervezési minta, amelyben egy objektum külső forrásból kapja meg a függőségeit, nem pedig saját maga hozza létre azokat. Ez növeli a kód modularitását és tesztelhetőségét.

A DI előnyei:

  • Egyszerűbb tesztelés — a függőségek könnyen helyettesíthetők mock vagy stub segítségével.
  • Gyenge kapcsolódás — az osztályok nem függenek konkrét implementációktól, csak absztrakcióktól.
  • Növeli a rugalmasságot — könnyen változtathatók a függőségek implementációi anélkül, hogy a fogyasztó kódját módosítanánk.

Példa C#-ban, ahol a konstruktoron keresztül injektáljuk a függőséget:

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) // a függőség a konstruktoron keresztül injektálódik
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // felhasználó létrehozási logika
        _logger.Log($"Felhasználó {name} létrehozva.");
    }
}

// Használat:
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");