Dependency injection (의존성 주입)
Updated:
🔷 Dependency injection (의존성 주입)
-
의존성 주입은 크게 3자기 방법이 있습니다
1. 생성자 메서드로 찔러 넣기 2. 맴버 변수에 직접 찔러 넣기 3. 주입 메소드를 따로 만들어서 찔러 넣기 (이건 잘 사용 안함)
protocol Talk {
func sayHi()
}
// bestFriend, oldFriend 의 talk class 들은 talk protocol 을 implement
// 하기 때문에 sayHi 메소드 정의가 강제됨
class BestFriendTalk: Talk {
func sayHi() {
print("오늘 뭐 먹지?")
}
}
class OldFriendTalk: Talk {
func sayHi() {
print("이야 이게 얼마 만이야?")
}
}
// 친구 클래스
class Friend {
// 맴버 변수로서 토크를 가진다
// 외부에서도 주입이 가능하도록 private 으로 안함
var talk: Talk?
init(talk: Talk) {
self.talk = talk
}
// 의존성 주입이 완료된? 토크로 말함
func sayHello() {
talk?.sayHi()
}
// 의존성 주입 메소드
func setTalk(talk: Talk) {
self.talk = talk
}
}
// 친구 인스턴스 생성시에 토크를 주입시킴
let bfTalk = BestFriendTalk()
let myBestFriend = Friend(talk: bfTalk)
myBestFriend.sayHello()
// 친구 인스턴스를 만들고 맴버 변수에 찔러 넣어서 주입함
let myOldFriendTalk = OldFriendTalk()
let myOldFried = Friend()
myOldFried.talk = myOldFriendTalk
myOldFried.sayHello()
Reference
Swift Tip of the day - 스위프트 기초 문법 - https://spangle-wedelia-2dc.notion.site/Swift-Tip-of-the-day-c428bfd990674bcfa2a4973e5d08c4eb
꼼꼼한 재은 씨의 스위프트 문법편 - https://book.jacobko.info/#/book/1186710233
Leave a comment