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

Categories:

Updated:

Leave a comment