[iOS/Swift] delegate 패턴

민니·2022년 4월 6일
0

iOS

목록 보기
2/22

delegate 패턴

  • 델리게이트 패턴이란?
  • 델리게이트 패턴의 특징
  • 실전



델리게이트 패턴이란?

  • 클래스나 구조체가 자신의 책임이나 임무를 다른 타입의 인스턴스에게 위임하는 패턴
  • 하나의 객체가 모든일을 처리하는 것이 아니라, 처리해야 할 일 중 일부를 다른 객체에게 넘기는 것을 말함


델리게이트 패턴의 특징

  • 기능을 처리할 객체를 델리게이트로 설정
  • 특정 이벤트가 발생할 때 이를 델리게이트에 의해 위임된 본래의 객체로 전달해 주는 역할
  • 특정 이벤트가 발생했을 때 알려 주는 방법이 델리게이트 메소드를 사용하는 것
  • 델리게이트 패턴을 사용하는 모든 객체는 델리게이트 메소드를 정의한 프로토콜을 가지고, 이를 델리게이트 프로토콜이라고 한당
  • 이는 객체 이름 뒤에 Delegate를 붙여서 정의함


이해가 안 되쟈나!!!!! 쉽게 정리해!!!!!!

위임하는 객체

  • protocol 선언
  • 위임하는 객체는 일을 시키는 사람이라고 생각하면 편함!
  • delegate 변수 선언 해 주기
  • delegate 변수를 이용하여 이러한 일을 시킬 거야라고 알려 줘야 함

위임을 받는 인스턴스

  • 위임을 받아 일을 하는 사람
  • 델리게이트 프로토콜을 채택
  • 인스턴스.delegate = self -> 자신이 위임을 받겠다, - 자신이 처리하겠다고 선언해 줘야 함, 위임자의 delegate 변수와 자신을 연결해 주는 코드임
  • 프토토콜의 메소드를 전부 구현해 주기

적용해 보기

(https://velog.io/@zooneon/Delegate-패턴이란-무엇일까 님 예시 참고하였습니당)

위임자: 알바 사장님
위임 받는 사람: 알바하는 나 ㅜ.ㅜ(카페 알바생)

protocol CafeDelegate { //프로토콜 선언
	func americanoShot() //아메리카노 만드는 나
    func cashier() //계산하는 나
}

//사장님 - 위임하는 객체
class Boss {
	//delegate 변수 선언
    //뒤 프로토콜에 있는 일들을 위임하겠다고 함
	var delegate: CafeDelegate? 
   
   //위임할 인스턴스에게 이러한 일들을 시키겠다고 선언함
   func order() {
   	self.delegate?.americanoShot()
   	self.delegate?.cashier()
   }
}

class PartTimerMini: CafeDelegate { //프로토콜 채택해줌
    init(mini: Boss) {
        mini.delegate = self //self(PartTimerMini)가 mini의 대리자가 되겠다고 선언
    }

    //프로토콜 메소드 완성
    func americanoShot() {
        print("아메리카노 샷 내리는 중")
    }
    
    func cashier() {
        print("계산하는 중")
    }

}






출처: 꼼꼼한 재은씨의 Swift 기본편
https://velog.io/@zooneon/Delegate-패턴이란-무엇일까
야곰 SWIFT 스위프트 프로그래밍

0개의 댓글