1. 利用委托接口和默认方法设计架构
- 定义接口:首先定义一个包含默认方法的接口。默认方法提供了通用的实现,各个模块可以选择使用默认实现或者重写。
interface CommonInterface {
fun commonMethod(): String
// 默认实现
= "Default implementation"
}
- 使用委托接口:对于不同的模块,通过委托来实现接口。这样可以复用接口的默认实现,同时也可以方便地调整特定模块的行为。
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. 在不同模块中调整默认方法行为
- 重写默认方法:在模块的实现类中,如
ModuleA
,直接重写commonMethod
方法,提供符合该模块需求的实现。
- 复用默认实现:像
ModuleB
,如果不需要特殊处理,可以直接复用DefaultCommonImplementation
中的默认实现。
3. 核心代码结构总结
- 接口定义:定义包含默认方法的通用接口
CommonInterface
。
- 默认实现类:创建一个实现接口的默认实现类
DefaultCommonImplementation
,其他模块通过委托这个类来复用默认行为。
- 模块实现类:各个模块通过
by
关键字委托默认实现类,并按需重写默认方法来调整行为。这种架构使得代码具有灵活性,易于维护和扩展,不同模块可以独立调整自己的行为,同时共享通用的接口和默认实现。