Delegate Pattern
by 키워드는 다시말해 위임의 개념이다.
간단한 예제를 통해 알아 보겠다.
interface Printer {
fun printMessage(message: String)
}
//Printer 라는 인터페이스를 상속받음
class RealPrinter : Printer {
override fun printMessage(message: String) {
println("Printing: $message")
}
}
class PrinterDelegate(realPrinter: RealPrinter) : Printer by realPrinter //realPrinter(RealPrinter의 인스턴스) 는 Printer인터페이스의 구현을 상속받음
fun main() {
val realPrinter = RealPrinter() // ver1. 일반적 예시를위해 인스턴스를 만들어 매개변수에 넣었고
val printerDelegate = PrinterDelegate(realPrinter)
val printerDelegate = PrinterDelegate(Realprinter()) //ver2. 이렇게 넣어도 됩니다.
printerDelegate.printMessage("나는 짱이다")
}
실행결과