Junior — Middle
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 Əksinə Çevrilməsi (Dependency Inversion Principle, DIP) — SOLID prinsiplərindən biridir və deyir ki:
- Yüksək səviyyəli modullar aşağı səviyyəli modullara bağlı olmamalıdır. Hər ikisi abstraksiyalara bağlı olmalıdır.
- Abstraksiyalar detallara bağlı olmamalıdır. Detallar abstraksiyalara bağlı olmalıdır.
Bu, kodun əlaqəliliyini azaltmağa və çevikliyi artırmağa yönəlmiş bir dizayn prinsipidir.
Asılılıqların İnjeksiyası (Dependency Injection, DI) — bu prinsipi praktikada həyata keçirən bir nümunə və ya texnikadır. DI, asılılıqların (sinif üçün lazım olan obyektlər) xaricdən ötürülməsini ifadə edir, sinif daxilində yaradılmır.
Nümunə:
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("Xidmətin işi") }
}
class Client {
let service: Service
// Asılılığın konstruktor vasitəsilə injeksiyası
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
Burada DIP — bu, Client-in Service abstraksiyasına, yəni RealService-in konkret tətbiqinə bağlı olmaması fikridir. DI — bu, konkret tətbiqin xaricdən Client-ə ötürülmə üsuludur.
Xülasə:
- DIP — dizayn prinsipi.
- DI — bu prinsipi həyata keçirmə üsuludur.