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

问题描述

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

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 (将#修改为@)