【问题标题】:Open Close Principle and Extension Functions开闭原理及扩展功能
【发布时间】:2019-03-13 18:37:31
【问题描述】:

我了解到开放关闭原则允许扩展类并限制修改。所以在 Kotlin 中,当我们使用扩展函数时

  1. 我们是否在扩展一个类
  2. 或者我们在修改一个类
  3. kotlin 中的扩展函数可以作为打开/关闭原则的示例吗?

我假设扩展意味着应用继承和修改手段来添加或更改现有类的代码。

谢谢

【问题讨论】:

    标签: android kotlin solid-principles extension-function


    【解决方案1】:

    扩展功能专为您想要将功能添加到内置或第三方类的情况而设计。默认情况下你不能这样做,因为内置函数是不可修改的。

    将 toUnsigned 方法添加到内置 Byte 类的示例实现:

    fun Byte.toUnsigned(): Int {
        return if (this < 0) this + 256 else this.toInt()
    }
    

    由于 Byte 是一个内置类,您不能直接对其进行修改。但是,您可以按照上面的代码定义扩展函数。然后可以通过以下方式调用扩展函数:

    val x: Byte = -1
    println(x.toUnsigned()) // Prints 255
    

    请记住,这只是语法糖——您实际上并没有修改类或其实例。因此,您必须在要使用的任何地方导入扩展函数/属性(因为它不与类的实例一起携带)。

    来源:https://kotlinlang.org/docs/tutorials/kotlin-for-py/extension-functionsproperties.html

    【讨论】:

      【解决方案2】:

      在开放封闭原则的上下文中的“扩展”通常并不意味着继承,它意味着以某种方式扩展具有新功能的类。正如您所说,“修改”确实是指更改类的代码。

      Kotlin 的扩展工具允许您在不编辑类代码的情况下向类添加方法。这完全符合开放封闭原则——类在不改变类本身的情况下扩展了新功能。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-05
        • 2019-12-13
        • 2022-01-09
        相关资源
        最近更新 更多