
Delegate
:class MyString {
fun myPrint(text: String) {
println(text)
}
}
MyString
с методом myPrint()
. Допустим нам надо сделать собственное расширение printRealExt()
без использование встроенных в Kotlin возможностей:fun MyString.printRealExt(text: String) {
println(text)
}
interface ExtensionPrint {
fun printExt(text: String)
}
class ExtensionPrintImpl : ExtensionPrint {
override fun printExt(text: String) {
println(text)
}
}
Delegation
делегируем этот метод:class MyString : ExtensionPrint by ExtensionPrintImpl() {
fun myPrint(text: String) {
println(text)
}
}
val myString = MyString()
myString.printRealExt("Real ext")
myString.printExt("Text from ext")
interface OneClassInterface {
fun someOne()
}
class OneClassImpl : OneClassInterface {
override fun someOne() {
println("some One")
}
}
interface TwoClassInterface {
fun someTwo()
}
class TwoClassImpl : TwoClassInterface {
override fun someTwo() {
println("someTwo")
}
}
class DerivedClass : OneClassInterface by OneClassImpl(), TwoClassInterface by TwoClassImpl()
@android_its