Junior — Middle
Vai jūs varētu izskaidrot pretējas atkarības koncepciju un tās lomu sistēmu projektēšanā?
sobes.tech AI
Atbilde no AI
Kontroles inversija (IoC) ir principa, kas pārnes atkarību pārvaldību starp sistēmas komponentiem uz ārēju konteineru vai ietvaru, nevis tieši komponentu iekšienē.
Loma sistēmas projektēšanā:
- Palielina moduļumu un testējamību, jo komponenti nepaļaujas uz konkrētām realizācijām, bet tās saņem no ārpuses.
- Viegli aizstāt un paplašināt komponentus bez koda izmaiņām, kas tos izmanto.
Piemērs: vietā, lai klase pati izveidotu atkarības objektu, tā to saņem caur konstruktoru vai setter. Tas ļauj viegli mainīt realizācijas, piemēram, testiem.
protocol Service {
func doWork()
}
class RealService: Service {
func doWork() { print("Darbs pabeigts") }
}
class Client {
let service: Service
init(service: Service) {
self.service = service
}
}
let service = RealService()
let client = Client(service: service)
Šeit, Klients pats neizveido RealService, bet to saņem no ārpuses — tas ir atkarību inversija.