Sobes.tech
Junior — Middle

გთხოვთ, ახსენით დამოკიდებულებების ინექციის პრინციპი პროგრამულ კოდში და მისი უპირატესობები.

sobes.tech AI

პასუხი AI-სგან

მომწოდებლობის ინექცია (Dependency Injection, DI) — ეს არის დიზაინის ნიმუში, სადაც ობიექტი იღებს თავის დამოკიდებულებებს გარედან, ნაცვლად იმისა, რომ თავად შექმნას ისინი. ეს ზრდის კოდის მოდულარობას და ტესტირებადობას.

DI-ის უპირატესობები:

  • ტესტირების გამარტივება — დამოკიდებულებები ადვილად შეიძლება შეიცვალოს mock ან stub-ით.
  • სუსტი კავშირი — კლასები არ არიან დამოკიდებული კონკრეტულ რეალიზაციებზე, მხოლოდ აბსტრაქციებზე.
  • მოსახერხებელი მოქნილობა — დამოკიდებულებების რეალიზაციების შეცვლა მარტივია, دون შეცვალოთ მომხმარებლის კოდი.

ცხადი მაგალითი 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} შექმნილია.");
    }
}

// გამოყენება:
var logger = new ConsoleLogger();
var service = new UserService(logger);
service.CreateUser("Alice");