의존성 주입
프로그램 디자인이 결합도를 느슨하게 되도록하고 의존 관계 역전 원칙과 단일 책임 원칙을 따르도록 클라이언트 생성에 대한 의존성을 클라이언트의 행위로 부터 분리하는 것.
의존성: 서로 다른 객체 사이에 의존 관계가 있다는 것.
주입: 외부에서 객체(또는 데이터)를 생성해서 넣는 것(생성자를 통해)
개선된 의존성: 프로토콜을 사용해서 의존성을 분리시키고, 의존관계를 역전(Inversion Of Control) 시킴
주입: 생성자를 통해서 외부에서 값을 주입한다.(생성시 값 할당 가능 / 언제든지 교체 가능해져 확장성이 늘어남)
class A {
var name : String = "A"
}
class B {
var name: String = "B"
}
class C {
// A에 대한 의존성이 생긴다.
**var a: A = A()**
func printName() {
print(a.name)
}
}
**주입의 개념
class Person {
var name: String
init(name: String) {
self.name = name
}
}
// 외부에서 값을 주입(할당/초기화)해서 인스턴스 생성
let p1 = Person(name: "뉴진스")**
의존성 주입의 장점 / 사용하는 이유
객체지향 프로그래밍(OPP)의 5대 원칙(SOLID) 중
하나가 의존 관계 역전 원칙(DIP: Dependency Inversion Principle) 의존 관계의 분리