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");