最近在我公司,辩论是在审查了编写重型班级的另一种方法之后开始的。
必须使用Kotlin重写一个大型Java类,该类具有组件特定的逻辑(没有标准的OOP原理有意义)。提供的解决方案是将类别中的逻辑和类别中的逻辑拆分为单独的文件,并具有对主类的内部扩展功能。
示例:
Main.kt
class BigClass {
// internal fields exposed to the extension functions in different files
// Some main logic here
}
BusinessLogic.kt
internal fun BigClass.handleBussinessCase() {
// Complex business logic handled here accessing the exposed internal fields from BigClass
}
您对此有何看法?我可能还没有看到它在任何地方使用的可能是有充分的理由,但是替代千行类似乎更糟。
答案 0 :(得分:0)
关于为该类创建扩展功能的一些想法:
public
方法和属性; 也许我错过了一些东西,所以请阅读有关扩展here的更多信息。
答案 1 :(得分:0)
您必须考虑扩展函数不过是带有隐式第一个参数的函数,而该参数由this
引用。
因此,您的情况如下:
internal fun handleBussinessCase(ref: BigClass)
将会转换为 Java :
static void handleBussinessCase(BigClass ref)
但这可以被认为是委托模式,也可以封装在 Kotlin 中。
由于这些属性必须是内部,因此您可以将它们作为data class
注入到较小的用例中。如果围绕它们定义一个接口(尽管这会使属性成为 public ),则可以使用它创建一个委托模式,并在实现中仍使用this
引用每个属性。