Compose
라던지 Hilt
를 사용했을때, by keyword
를 본적이 있을것입니다.
또한, 이것이 Delegate를 이용했다는것도 알고있죠.
하지만 Delegate에 제대로 공부한적은 없을테니 오늘 같이 알아봅시다!
Delegate는 한국말로 위임이란 뜻이다.
우리가 계약서등을 작성할때, 대리인에게 결정 권한을 위임하면 대리인은 결정권한을 가질수 있다.
코틀린에서는 한 객체의 함수(행동) 혹은 프로퍼티 (속성) 의 구현을 다른 객체에 위임할 수 있습니다.
예를 들어볼까요?
interface 이사{
fun 도장찍기
}
class 나 : 이사 {
override fun 도장찍기(){//개발}
}
저는 이 회사의 이사입니다.
저의 도장을 찍어야만 안건이 넘어가죠.
도장찍기는 이사 interface
를 상속해야만 가능합니다.
하지만 제가 없을때, 저의 권한 대행을 해줄 누군가가 필요할 수도 있습니다.
val me = 나()
class 팀장() : 이사 by me
fun main(){
팀장().도장찍기()
}
여기서 중요한 것은 한 객체에서 구현된 메서드가 다른메서드와 같다면, 여러번 구현하는것보다 재사용하는것이 보일러 플레이트를 줄여준다는것입니다.
위임패턴은 인터페이스의 구현부를 다른 클래스에 위임하기때문에, 인터페이스 구현에만 사용될 수 있습니다.