Sobes.tech
Middle+

Тәуелділіктердің кері айналу қағидатын сақтау үшін қандай тәсілдер пайдаланылады?

sobes.tech AI

AIден жооп

Байланыштарды теске салуу принциби (Dependency Inversion Principle, DIP) деп аталат, ал:

  • Жогорку деңгээлдеги модулдар төмөнкү деңгээлдеги модулдарга түздөн-түз көз каранды болбошу керек.
  • Эки модул түрү да абстракциялардан (мисалы, интерфейстерден) көз каранды болушу керек.
  • Абстракциялар деталдардан көз каранды болбошу керек, деталдар абстракциялардан көз каранды болушу керек.

Бул принцибин C# тилинде сактоо үчүн төмөнкү ыкмалар колдонулат:

  1. Интерфейстер жана абстракттуу класстарды колдонуу

    • көз карандылыктар интерфейстер аркылуу жарыяланат, конкреттүү реализациялар эмес.
  2. Көз карандылыктарды киргизүү (Dependency Injection, DI)

    • көз карандылыктар сырттан (курулушчу, мүнөздөмөлөр же ыкмалар аркылуу) өткөрүлүп, ички түзүлбөйт.
    • Бул реализацияларды оңой алмаштырууга жана тестирлөөнү жөнөкөйлөштүрүүгө мүмкүндүк берет.
  3. Баскычты теске салуу (Inversion of Control, IoC)

    • Объекттерди түзүү жана байланыштыруу көзөмөлү сырткы контейнерге же фреймворкке өткөрүлөт.
  4. DI контейнерлерин колдонуу

    • Мисалы, Microsoft.Extensions.DependencyInjection, Autofac, Ninject жана башка.
    • Алар жашоо циклин жана көз карандылыктарды чечүүнү башкарат.

Мисал катары, курулуш аркылуу көз карандылыктарды киргизүү:

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} түзүлдү.");
    }
}

Бул мисалда, UserService ILogger абстракциясына көз каранды, жана конкреттүү реализация ConsoleLogger сырттан өткөрүлөт, бул көз карандылыктарды теске салуу принцибин көрсөтөт.