Middle+
Asılılıqların Tərs Çevrilməsi Prinsipinə riayət etmək üçün hansı yanaşmalar istifadə olunur?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıqların Tərs Çevrilməsi Prinsipi (Dependency Inversion Principle, DIP) belədir:
- Yüksək səviyyəli modullar aşağı səviyyəli modullardan birbaşa asılı olmamalıdır.
- Hər iki modul növü abstraksiyalara (məsələn, interfeyslərə) asılı olmalıdır.
- Abstraksiyalar detallardan asılı olmamalıdır, detallər abstraksiyalara asılı olmalıdır.
Bu prinsipi C# dilində tətbiq etmək üçün aşağıdakı yanaşmalar istifadə olunur:
-
Interfeys və abstrakt siniflərdən istifadə
- Asılılıqlar konkret tətbiqlər yerinə interfeyslər vasitəsilə elan edilir.
-
Asılılıqların injeksiyası (Dependency Injection, DI)
- Asılılıqlar sinfə xaricdən (konstruktor, xüsusiyyət və ya metodlar vasitəsilə) ötürülür və içində yaradılmır.
- Bu, tətbiqlərin asanlıqla dəyişdirilməsinə və testlərin sadələşdirilməsinə imkan verir.
-
İnversiya idarəetməsi (Inversion of Control, IoC)
- Obiektlərin yaradılması və bağlanması idarəsi xarici konteyner və ya çərçivəyə verilir.
-
DI konteynerlərindən istifadə
- Məsələn, Microsoft.Extensions.DependencyInjection, Autofac, Ninject və s.
- Onlar həyat dövrünü və asılılıqları həll etməyi idarə edir.
Misal üçün, konstruktor vasitəsilə asılılıqların injeksiyası:
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)
{
// istifadəçi yaradılması loqikası
_logger.Log($"İstifadəçi {name} yaradıldı.");
}
}
Bu nümunədə, UserService ILogger abstraksiyasına asılıdır və konkret ConsoleLogger tətbiqi xaricdən ötürülür, bu da asılılıqların tərs çevrilməsi prinsipinə uyğundur.