微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将一个接口委托给多个实现

如何解决将一个接口委托给多个实现

一个类可以用几行代码一个接口委托给多个实现吗?鉴于此接口:

interface Foo {
  fun doA()
  fun dob()
}

以下类将针对单个委托进行编译:

class FooImpl(delegate: Foo): Foo by delegate

虽然没用,但它会为应该做的事情生成 java 字节码:delegate Foo -> Foo

这是否也适用于代表列表?这样它就委托 Foo -> List<Foo>。喜欢:

class FooImpl(delegates: List<Foo>): Foo by delegates

现在,我们的代码库充满了如下类:

class FooImpl(private val delegates: List<Foo>): Foo {
   override fun doA() { delegates.forEach { it.doA() } 
   override fun dob() { delegates.forEach { it.dob() } 
}

感觉就像是忙碌的工作,而且很容易出错,而且它为编写代码的开发人员和审查代码的开发人员带来了不必要的工作。我知道返回值可能会变得复杂,但情况永远不会如此。在当前代码中,总是有一组接口、2 个实际实现和一个doA() { delegates.forEach { it.doA() } 填充的根实现。 使用 Kotlin 可以简化吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。