Junior — Middle
Оё метавонед фарқият байни принсипи ифодасозии вобастагиҳо ва ворид кардани вобастагиҳоро шарҳ диҳед?
sobes.tech AI
Ҷавоб аз AI
Принсипи иваз кардани вобастагиҳо (Principle-и иваз кардани вобастагиҳо, DIP) — яке аз принсипҳои SOLID мебошад, ки мегӯяд:
- Модулҳои сатҳи баланд набояд аз модулҳои сатҳи паст вобаста бошанд. Ҳарду бояд аз абстраксияҳо вобаста бошанд.
- Абстраксияҳо набояд аз тафсилот вобаста бошанд. Тафсилот бояд аз абстраксияҳо вобаста бошанд.
Ин принсипи тарҳрезӣ аст, ки барои кам кардани пайвастагӣ ва баланд бардоштани чандирии коди барномавӣ равона шудааст.
Вуруд кардани вобастагиҳо (Dependency Injection, DI) — намуна ё техникаест, ки принсипи иваз кардани вобастагиҳоро дар амал татбиқ мекунад. DI маънои онро дорад, ки вобастагиҳо (объектҳое, ки барои кор кардан ба класа лозиманд) аз берун гузаронида мешаванд, на дар дохили класа сохта мешаванд.
Масалан:
protocol Service {
func doSomething()
}
class RealService: Service {
func doSomething() { print("Камари хидмат") }
}
class Client {
let service: Service
// Вуруд кардани вобастагиҳо тавассути конструктор
init(service: Service) {
self.service = service
}
func execute() {
service.doSomething()
}
}
let service = RealService()
let client = Client(service: service)
client.execute()
Ин ҷо DIP — ин идея аст, ки Client аз абстраксияи Service вобаста аст, на аз иҷрои мушаххас RealService. DI — ин усулест барои гузаронидани иҷрои мушаххас ба Client аз берун.
Хулоса:
- DIP — принсипи тарҳрезӣ.
- DI — усули татбиқи ин принсип.