Middle+
Тәуелділіктердің кері айналу қағидатын сақтау үшін қандай тәсілдер пайдаланылады?
sobes.tech AI
AIден жооп
Байланыштарды теске салуу принциби (Dependency Inversion Principle, DIP) деп аталат, ал:
- Жогорку деңгээлдеги модулдар төмөнкү деңгээлдеги модулдарга түздөн-түз көз каранды болбошу керек.
- Эки модул түрү да абстракциялардан (мисалы, интерфейстерден) көз каранды болушу керек.
- Абстракциялар деталдардан көз каранды болбошу керек, деталдар абстракциялардан көз каранды болушу керек.
Бул принцибин C# тилинде сактоо үчүн төмөнкү ыкмалар колдонулат:
-
Интерфейстер жана абстракттуу класстарды колдонуу
- көз карандылыктар интерфейстер аркылуу жарыяланат, конкреттүү реализациялар эмес.
-
Көз карандылыктарды киргизүү (Dependency Injection, DI)
- көз карандылыктар сырттан (курулушчу, мүнөздөмөлөр же ыкмалар аркылуу) өткөрүлүп, ички түзүлбөйт.
- Бул реализацияларды оңой алмаштырууга жана тестирлөөнү жөнөкөйлөштүрүүгө мүмкүндүк берет.
-
Баскычты теске салуу (Inversion of Control, IoC)
- Объекттерди түзүү жана байланыштыруу көзөмөлү сырткы контейнерге же фреймворкке өткөрүлөт.
-
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 сырттан өткөрүлөт, бул көз карандылыктарды теске салуу принцибин көрсөтөт.