Swift) Delegation Pattern

Publishing Date:2020-09-16

Delegation

Delegation 패턴은 객체지향 디자인 패턴중의 하나로 객체 구조가 상속처럼 코드 재사용을 할 수 있게 한다. 즉, 객체는 Delegate라는 헬퍼 객체를 만들어 권한을 위임함으로써 요청을 처리하는데, 이 때 delegate는 원래 객체의 context를 사용한다.

그렇다면 Delegation은 왜 사용할까?
처음에는 단순히 Delegation을 사용했던 상황(특정 뷰가 뷰 컨트롤러에게 처리를 맡긴 경우)만을 생각하고 뷰가 처리하기 어려운 상황에 처리할 수 있는 대리자를 만드는것인가 추측했다. 그러나 Delegation의 정의에서 위와 같은 단순한 1차원적인 이유가 아니라 코드 재사용이라는 넓은 이유로 사용한다는 것을 알 수 있었다. 보통 객체 지향에서는 코드를 재사용하기 위해 상속을 하는데,

즉, 상속을 하기 어려운 상황에 Delegation을 대신 사용할 수 있다는 것이다. 그럼 언제 상속을 하고 언제 Delegation을 사용하나요?

이 질문에 대해서는 내가 참고한 글에 워낙 설명이 잘 되어 있어서 읽어보길 권한다.

Examples

Delegate 패턴을 활용하는 경우를 예를 들어 설명

  • Observer
  • Event Listener

Reference

Delegation Pattern
Delegate 이해에 도움이 된 글
Observers

Comments