iOS/Swift

[디자인패턴] Delegation

Brad_Heo 2022. 6. 14. 18:19

Delegation가 무엇일까??

클래스나 구조체가 책임을 일부 다른 타입의 인스턴스로 전달 할 수 있게 하는 디자인 패턴.

그래서 Delegation이 뭐야??

너가 해야할 일을 대신 해줄게!!

구현하기 위해 필요한 것들에 대해서 생각해보자

  1. 프로토콜 - 대리자가 수신자에게 전달할 내용의 규칙
  2. 수신자 - 대리자에게 넘기는 곳
  3. 대리자 - 수신자를 대신해서 처리할 대상

왜 사용할까??

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()