打开关闭原理和扩展函数

问题描述 投票:2回答:2

我了解到Open Close Principle允许扩展类并限制修改。所以在Kotlin,当我们使用扩展功能时

  1. 我们是在扩展课程吗?
  2. 或者我们正在修改一个类
  3. kotlin中的扩展函数可以作为开/关原理的一个例子吗?

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

谢谢

android kotlin solid-principles extension-function
2个回答
3
投票

扩展功能适用于要将功能添加到内置或第三方类的情况。默认情况下,您无法执行此操作,因为内置函数不可修改。

将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


1
投票

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

Kotlin的扩展功能允许您在不编辑类代码的情况下向类添加方法。这与开放封闭原则完全一致 - 该类扩展了新功能,而不会更改类本身。

© www.soinside.com 2019 - 2024. All rights reserved.