[Kotlin Design Class] Delegate

0

Kotlin Design Class

목록 보기
2/4

Compose 라던지 Hilt를 사용했을때, by keyword를 본적이 있을것입니다.
또한, 이것이 Delegate를 이용했다는것도 알고있죠.

하지만 Delegate에 제대로 공부한적은 없을테니 오늘 같이 알아봅시다!


Delegate(위임)이란?

Delegate는 한국말로 위임이란 뜻이다.
우리가 계약서등을 작성할때, 대리인에게 결정 권한을 위임하면 대리인은 결정권한을 가질수 있다.

코틀린에서는 한 객체의 함수(행동) 혹은 프로퍼티 (속성) 의 구현을 다른 객체에 위임할 수 있습니다.

예를 들어볼까요?

interface 이사{
	fun 도장찍기
}

class: 이사 {
	override fun 도장찍기(){//개발}
}

저는 이 회사의 이사입니다.
저의 도장을 찍어야만 안건이 넘어가죠.

도장찍기는 이사 interface를 상속해야만 가능합니다.

하지만 제가 없을때, 저의 권한 대행을 해줄 누군가가 필요할 수도 있습니다.

val me =()
class 팀장() : 이사 by me

fun main(){
	팀장().도장찍기()
}

여기서 중요한 것은 한 객체에서 구현된 메서드가 다른메서드와 같다면, 여러번 구현하는것보다 재사용하는것이 보일러 플레이트를 줄여준다는것입니다.

Say Good by~

위임패턴은 인터페이스의 구현부를 다른 클래스에 위임하기때문에, 인터페이스 구현에만 사용될 수 있습니다.

  • by keyword는 interface가 implement되는 경우 사용 가능
  • 클래스 상속에는 by 키워드 불가능
  • 프로퍼티(val, var)와 메서드(fun)에 대한 위임만 가능

참고

코틀린 위임

Kotlin Delegation 분석

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글