MST

星途 面试题库

面试题:Kotlin委托接口与默认方法在复杂业务场景下的应用

假设你正在开发一个大型的Android应用,其中涉及多个模块需要实现某个相同的接口,但各模块实现略有差异。请阐述如何利用Kotlin的委托接口和默认方法来设计一个灵活且易于维护的架构,并详细说明在不同模块中如何根据需求调整默认方法的行为,给出核心代码结构示例。
29.1万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

1. 利用委托接口和默认方法设计架构

  1. 定义接口:首先定义一个包含默认方法的接口。默认方法提供了通用的实现,各个模块可以选择使用默认实现或者重写。
interface CommonInterface {
    fun commonMethod(): String
        // 默认实现
        = "Default implementation"
}
  1. 使用委托接口:对于不同的模块,通过委托来实现接口。这样可以复用接口的默认实现,同时也可以方便地调整特定模块的行为。
class ModuleA : CommonInterface by DefaultCommonImplementation() {
    override fun commonMethod(): String {
        // 根据ModuleA的需求调整行为
        return "ModuleA implementation"
    }
}

class ModuleB : CommonInterface by DefaultCommonImplementation() {
    // 这里可以选择使用默认实现,也可以重写
}

class DefaultCommonImplementation : CommonInterface {
    override fun commonMethod(): String {
        return super.commonMethod()
    }
}

2. 在不同模块中调整默认方法行为

  1. 重写默认方法:在模块的实现类中,如ModuleA,直接重写commonMethod方法,提供符合该模块需求的实现。
  2. 复用默认实现:像ModuleB,如果不需要特殊处理,可以直接复用DefaultCommonImplementation中的默认实现。

3. 核心代码结构总结

  • 接口定义:定义包含默认方法的通用接口CommonInterface
  • 默认实现类:创建一个实现接口的默认实现类DefaultCommonImplementation,其他模块通过委托这个类来复用默认行为。
  • 模块实现类:各个模块通过by关键字委托默认实现类,并按需重写默认方法来调整行为。这种架构使得代码具有灵活性,易于维护和扩展,不同模块可以独立调整自己的行为,同时共享通用的接口和默认实现。