在 Kotlin 中实现具有多个重写方法的复杂接口
Kotlin 是 JetBrains 开发的一种静态类型的通用编程语言,构建了 IntelliJ IDEA、PhpStorm、Appcode 等世界一流的 IDE。它由 JetBrains 于 2011 年首次推出,是一种新的 JVM 语言。 Kotlin 是一种面向对象的语言,是一种比Java“更好的语言”,但仍可与Java代码完全互操作。在本文中,我们将讨论如何在 Kotlin 中实现具有多个重写方法的复杂接口,但在此之前,您应该了解一些更好的理解。
坚实的原则
SOLID 是一个助记首字母缩写词,用于定义五个基本的面向对象设计原则:
- 单一职责原则
- 开闭原则
- 里氏替换原则
- 接口隔离原则
- 依赖倒置原则
接口隔离原则(ISP)指出,如果一个接口变得太长,最好将它分成更小的部分(接口),这样客户端就不需要实现他们不感兴趣的部分。在本文中,我们将了解什么以及为什么这很重要。
例子
让我们看一个 ISP 可以帮助我们的例子:
这是一个“胖”界面的简单示例:
Kotlin
button.setOnClickListener(object : View.OnClickListener {
fun onClick (View v) {
// TODO: do some stuff. . .
}
fun onLongClick (View v) {
// we don't need it
}
fun onTouch (View v, MotionEvent event) {
// we don't need it
}
});
Kotlin
interface OnClickListener {
fun onClick ( v:View )
}
public interface OnLongClickListener {
fun onLongClick ( v: View)
}
interface OnTouchListener {
fun onTouch ( v: View , event : MotionEvent)
Kotlin
fun main (args: Array) {
Simple ().callMethod ()
}
class Simple: A{
fun callMethod () {
bar ()
}
}
interface A{
fun bar () {
println ("Printing from interface")
}
}
正如你所看到的,大接口的问题是我们被迫实现这些方法,即使我们在那里没有任何事情要做。一个简单的解决方案是将该接口分解为更小的接口,如以下代码:
科特林
interface OnClickListener {
fun onClick ( v:View )
}
public interface OnLongClickListener {
fun onLongClick ( v: View)
}
interface OnTouchListener {
fun onTouch ( v: View , event : MotionEvent)
注意,现在我们已经把一个大的接口分成了几个小的,可以独立实现。 Kotlin 还有一个强大的功能,允许您在接口本身中编写方法的完整实现。让我们看一下下面的代码来理解它:
科特林
fun main (args: Array) {
Simple ().callMethod ()
}
class Simple: A{
fun callMethod () {
bar ()
}
}
interface A{
fun bar () {
println ("Printing from interface")
}
}
如您所见,我们在接口中实现了整个方法,并且我们能够从实现该接口的类中调用它。这个特性也可以用来遵循 ISP 原则,因为我们可以在接口本身中放一个常用的方法;因此,我们不需要在每次实现该接口时都实现它。