gpt4 book ai didi

android - Kotlin 扩展函数来拆分大类

转载 作者:行者123 更新时间:2023-12-02 12:27:51 36 4
gpt4 key购买 nike

最近在我的公司,在回顾了编写重型类(class)的不同方法后开始了一场辩论。

必须用 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
}

您对此有何看法?我没有看到它在任何地方使用可能是有充分理由的,但是千行类的替代品似乎更糟。

最佳答案

您必须考虑到扩展函数只不过是一个带有隐式第一个参数的函数,它被 this 引用。 .

所以在你的情况下,你会有类似的东西:

internal fun handleBussinessCase(ref: BigClass)

这将转换为Java:
static void handleBussinessCase(BigClass ref)

但这可以假设为委托(delegate)模式,它也可以在 Kotlin 中更清晰地封装。

由于属性无论如何都必须是内部的,您可以将它们作为 data class 注入(inject)。进入更小的用例。如果您围绕这些定义一个接口(interface)(虽然这会使属性公开),您可以使用它创建一个委托(delegate)模式并仍然使用 this 引用每个属性在您的实现中。

关于android - Kotlin 扩展函数来拆分大类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53043869/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com