Kotlin-委托剖析(1)- 接口委托

2022-04-18  本文已影响0人  杨0612
简单列子
interface Listener {//1
    fun onSuccess()
    fun onFailed()
}
class A() : Listener{//2
    override fun onSuccess() {
    }

    override fun onFailed() {
    }
}

class B() : Listener{//3
    override fun onSuccess() {
    }

    override fun onFailed() {
    }
}
class ListenerImpl : Listener {//1
    override fun onFailed() {
        //do something
    }

    override fun onSuccess() {
        //do something
    }
}

//定义
class A(listener: Listener) : Listener by listener//2
class B(listener: Listener) : Listener by listener//3

//调用
A(ListenerImpl())
B(ListenerImpl())
反编译看看原理
public final class A implements Listener {
   // $FF: synthetic field
   private final Listener $$delegate_0;

   public A(@NotNull Listener listener) {
      Intrinsics.checkNotNullParameter(listener, "listener");
      super();
      this.$$delegate_0 = listener;
   }

   public void onFailed() {
      this.$$delegate_0.onFailed();//1
   }

   public void onSuccess() {
      this.$$delegate_0.onSuccess();//2
   }
}
总结

接口委托,将接口的逻辑交给委托来处理,很适合运用在接口实现一致的,或者用组合的方式来构建能力的场景。

以上分析有不对的地方,请指出,互相学习,谢谢哦!

上一篇 下一篇

猜你喜欢

热点阅读