iOS) Delegate Pattern

Havi·2020년 9월 15일
0
post-custom-banner

본 블로그는 개인적인 공부 및 저장의 용도 작성됐습니다.

Delegate란?

Delegate : 위임하다, 대리하다

델리게이트 패턴은 디자인 패턴중 하나로 어떤 객체가 해야할 일을 대신 해줄 때 사용한다.

예를 들면 Boss Class와 Intern Class가 있다고 치자. Boss Class는 회사와 미팅을 하는 업무를 한다. 미팅이 끝나면 다른 회사로 미팅을 가야하기 때문에, 미팅한 결과를 Intern Class에게 넘겨주면 Intern Class는 그 결과를 가지고 엑셀에 정리한다.

여기서 Boss의 Delegate는 Intern이 되는 것이다.

즉 Delegate는 Boss는 Boss의 업무만, Intern은 Intern의 업무만 하기 위해 Boss의 데이터를 Intern에게 넘겨주어 각자의 역할을 분리하는 역할을 한다.

이렇게 어떠한 업무가 끝났을 때 그 data를 처리해주는 패턴으로는 Delegate, Notification, KVO(Key-Value Observing) 등 이 있다.


Delegate특징

장점

  1. 프로토콜에 필요한 메소드가 명확하게 명시
  2. 로직의 흐름을 따라가기 쉬움
  3. 제 3의 객체(eg. notification center)가 필요없음

단점

  1. 많은 줄의 코드가 필요
  2. delegate에 nil이 들어가지 않게 주의
  3. 1대다 의 이벤트가 비효율적이고 어려움

Delegate 선언

  1. 요구사항 파악
//Boss는 Intern에게 엑셀로 정리해야할 업무를 줌
protocol ExcelDelegate {
	func takeBossesJob()
}
  1. Intern에게 요구사항 할당
Class InternViewController: UIViewController, ExcelDelegate {
//2,3번 작업 내용 작성
}
  1. Boss 객체와 Intern객체를 연결
//in Intern Class
var boss: Boss? = Boss()
boss.delegate = self
  1. 요구사항 구현
//in Intern Class
func takeBossesJob() {
	//do Something
}

참조
https://you9010.tistory.com/275
https://magi82.github.io/ios-delegate/
https://velog.io/@delmasong/Delegate-pattern-in-iOS-x1k6f9jzx8
https://baked-corn.tistory.com/23

profile
iOS Developer
post-custom-banner

0개의 댓글