Lee ByungTak

[kotlin] 코틀린 끄적끄적

Delegate

위임은 객체가 직접 작업 수행하지 않고 다른 도우미 객체가 그 작업을 처리하게 맡기는 디자인 패턴. 도우미 객체 -> 위임 객체

Delegate에는 2가지 있음.

  1. Delegated Property
  2. Class Delegation
  • Delegated Property

Delegated Property란 getter / setter를 위임하여, 위임 된 객체가 값을 읽고 쓸 때 일부 중간 작업을 수행 할 수 있도록 하는 것 이다.

https://medium.com/til-kotlin/how-kotlins-delegated-properties-and-lazy-initialization-work-552cbad8be60

  • Class Delegation

하나의 클래스를 다른 클래스에 위임하도록 선언하여 위임된 클래스가 가지는 인터페이스 메소드를 참조 없이 호출할 수 있도록 생성해주는 기능. 즉, by키워드를 통해, by옆에 쓴 그 인터페이스를 구현한 다른 도우미 객체를 만들어서 위임. (컴파일러가 도우미 객체를 만들어줌) 상속 대신 구성 할 수 있음. 구성을 더 쉽게 적용. 내부적으로 데코레이터 패턴이 활용되고 있음. -> 종종 상속을 허용하지 않는 클래스에 새로운 동작을 추가해야 할 때 데코레이터 패턴이 많이 쓰임. 이 패턴의 핵심은 상속을 허용하지 않는 기존 클래스 대신 사용할 수 있는 새로운 클래스를 만들되, 기존 클래스와 같은 인터페이스를 데코레이터가 제공하게 만들고, 기존 클래스를 데코레이터 내부 필드로 유지하는 것.

https://medium.com/til-kotlin-ko/kotlin%EC%9D%98-%ED%81%B4%EB%9E%98%EC%8A%A4-%EC%9C%84%EC%9E%84%EC%9D%80-%EC%96%B4%EB%96%BB%EA%B2%8C-%EB%8F%99%EC%9E%91%ED%95%98%EB%8A%94%EA%B0%80-c14dcbbb08ad

const val vs val?

const val - 컴파일 타임 할당 val - 런타임 할당