DI(의존성 주입)
작성일
DI(의존성 주입)
- 1.생성자 메서드로 찔러 넣기
- 2.멤버변수에 직접 찔러 넣기
// sayHi를 강제로 토크하는 프로토콜
protocol Talk {
func sayHi()
}
//베프, 올드프렌드 토크클래스들은 토크 프로토콜을 임플리먼트 하기 때문에 sayHi 메소드 정의가 강제됨
class BestFriendTalk: Talk {
func sayHi() {
print("오늘도 git에 올리는중?!")
}
}
class OldFriendTalk: Talk {
func sayHi() {
print("꾸준하네~")
}
}
//친구 클래스
class Frined{
//멤버변수로서 토크를 가진다.
//외부에서도 주입이 가능하도록 프라이빗으로 안한다.
var talk: Talk?
init(){}
//생성자 메소드를 통해 토크 주입 가능
init(talk: Talk) {
self.talk = talk
}
//의존성 주입이 완료된? 토크로 말한다
func sayHello(){
talk?.sayHi()
}
// 의존성 주입 메소드
func setTalk(talk: Talk) {
self.talk = talk
}
}
- 첫번째 방법.
친구 인스턴스 생성시에 토크를 주입시킴
let bfTalk = BestFriendTalk()
let myBestFriend = Frined(talk: bfTalk)
myBestFriend.sayHello()
출력
오늘도 git에 올리는중?!
- 두번째 방법.
친구 인스턴스를 만들고 멤버 변수에 찔러넣어서 주입함
let myOldFriendTalk = OldFriendTalk()
let myOldFrined = Frined()
myOldFrined.talk = myOldFriendTalk
myOldFrined.sayHello()
출력
꾸준하네~