Proqramlaşdırmada asılılıqların tərs çevrilməsi prinsipi ilə asılılıqların injeksiyası arasındakı fərqləri izah edə bilərsinizmi?
sobes.tech Süni İntellekt
AI-dan cavab
Asılılıqların Tərs Çevrilməsi Prinsipi (Dependency Inversion Principle, DIP), SOLID prinsiplərindən biridir və yüksək səviyyəli modulların aşağı səviyyəli modullara birbaşa bağlı olmaması, hər ikisinin də abstraksiyalara (məsələn, interfeyslərə) bağlı olması lazım olduğunu bildirir. Abstraksiyalar detallara bağlı olmamalıdır, detallər isə abstraksiyalara bağlı olmalıdır. Bu, memarlığı daha çevik və asan genişləndirilə bilən edir.
Asılılıq İnjeksiyası (Dependency Injection, DI), bu prinsipi həyata keçirən konkret bir nümunə və ya texnikadır. DI, bir obyektin asılılıqlarının xaricdən (məsələn, konstruktor, setter və ya metod vasitəsilə) ötürülməsini ifadə edir və bu asılılıqlar obyekt daxilində yaradılmır. Bu, test etməyi və komponentlərin dəyişdirilməsini asanlaşdırır.
Başqa sözlə:
- DIP, dizayn üçün bir qayda və ya prinsipdir.
- DI, bu prinsipi praktikada həyata keçirməyin bir yoludur.
Swift-də nümunə:
protocol NetworkService {
func fetchData()
}
class APIService: NetworkService {
func fetchData() {
print("API-dən məlumat alınır")
}
}
class ViewModel {
let networkService: NetworkService
// Konstruktor vasitəsilə asılılıq injeksiyası
init(networkService: NetworkService) {
self.networkService = networkService
}
func load() {
networkService.fetchData()
}
}
let apiService = APIService()
let viewModel = ViewModel(networkService: apiService)
viewModel.load()