Sobes.tech
Junior — Middle

Dasturlash kodida bog'liqlikni injektsiya qilish printsipi va uning afzalliklarini tushuntiring.

sobes.tech AI

AIdan javob

Bağımlılık Enjeksiyonu (Dependency Injection, DI) — bu, obyekti o'zining bog'liqliklarini tashqaridan oladigan dizayn shablonidir, u o'z-o'zidan yaratmaydi. Bu kodning modulli va test qilish imkoniyatini oshiradi.

DI ning afzalliklari:

  • Testlarni osonlashtiradi — bog'liqliklar osonlik bilan mock yoki stub bilan almashtirilishi mumkin.
  • Kuchli bog'liqlikning kamayishi — sinflar konkret amalga oshirishlarga emas, faqat abstraktsiyalarga bog'liq.
  • Moslashuvchanlikni oshiradi — bog'liqliklarning amalga oshirishlarini o'zgartirish, iste'molchining kodini o'zgartirmasdan, oson.

C# da bog'liqlikni konstruktor yordamida in'ektsiya qilish misoli:

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) // bog'liqlik konstruktor orqali in'ektsiya qilinadi
    {
        _logger = logger;
    }

    public void CreateUser(string name)
    {
        // foydalanuvchi yaratish logikasi
        _logger.Log($"Foydalanuvchi {name} yaratildi.");
    }
}

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