디펜던시인젝션 즉 DI 는 의존성 주입을 말합니다.
프로그래밍에서는 레퍼런스 타입이 서로 상속, 생성을 통하여 의존성이 생기게 됩니다.
여기서 DI 패턴을 사용하게 되면 의존성에 대하여 조금더 탁월한 방법으로 접근 가능하게 됩니다.
장점으로는
간단한 예제를 통해 알아보겠습니다.
class A {
var name = String
}
class B {
var internalValue = A()
}
let b = B()
print(b.internalValue)
위 예시 코드 처럼 B class 에서 A class를 생성하게 되면
B 는 A 에 의존관계가 생기게 됩니다.
여기서 DI (의존성 주입) 의 경우는
class A {
var name = String
init(name: String) {
self.name = name
}
func setName(name: String) {
self.name = name
}
}
let b = B(name: String("이름"))
print(b.name)
b.setName(name: String("또하나의이름"))
print(b.name)
이런식으로 외부에서 객체를 생성하여 주입하는 것을 말합니다.
의존성 + 주입의 경우는
class A {
var name = String
}
class B {
var internalValue: A
init(internalValue: A) {
self.internalValue = internalValue
}
}
let b = B(internalValue: A())
print(b.internalValue.name)
이런식으로 객체를 외부에서 생성후 멤버변수에 대입시킬수 있습니다.