iOS/Swift
[디자인패턴] Delegation
Brad_Heo
2022. 6. 14. 18:19
Delegation가 무엇일까??
클래스나 구조체가 책임을 일부 다른 타입의 인스턴스로 전달 할 수 있게 하는 디자인 패턴.
그래서 Delegation이 뭐야??
너가 해야할 일을 대신 해줄게!!
구현하기 위해 필요한 것들에 대해서 생각해보자
- 프로토콜 - 대리자가 수신자에게 전달할 내용의 규칙
- 수신자 - 대리자에게 넘기는 곳
- 대리자 - 수신자를 대신해서 처리할 대상
왜 사용할까??
Delegation 패턴은 역활에 대한 책임을 간결하게 표현하기 위해 각각에 대한 책임을 설정해주는 디자인 패턴.
Example Delegation code
protocol WorkDelegate {
func drinkCoffee()
}
class Boss: WorkDelegate {
func drinkCoffee() {
print("보스: 커피 마시기")
}
}
class Secretary {
var boss: WorkDelegate?
func makeCoffeeBoss() {
print("비서: 커피 만들어 드리기")
boss?.drinkCoffee()
}
}
let secretary = Secretary()
let Brad = Boss()
secretary.boss = Brad
secretary.makeCoffeeBoss()