Kotlin 中的组合模式(Composite Pattern)是一种允许你将对象组合成树形结构来表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和复合对象的使用具有一致性。在 Kotlin 中,你可以使用扩展函数和委托来实现组合模式,从而简化客户端调用。
以下是一个简单的 Kotlin 示例,展示了如何使用组合模式和扩展函数简化客户端调用:
// 组件接口
interface Component {
fun operation()
}
// 叶子组件
class Leaf : Component {
override fun operation() {
println("Leaf operation")
}
}
// 复合组件
class Composite : Component {
private val children = mutableListOf<Component>()
fun add(child: Component) {
children.add(child)
}
fun remove(child: Component) {
children.remove(child)
}
override fun operation() {
println("Composite operation")
children.forEach { it.operation() }
}
}
// 扩展函数,简化客户端调用
fun Component.performOperation() {
operation()
}
fun main() {
val root = Composite()
val leaf1 = Leaf()
val leaf2 = Leaf()
root.add(leaf1)
root.add(leaf2)
root.performOperation() // 输出: Composite operation, Leaf operation, Leaf operation
}
在这个示例中,我们定义了一个 Component
接口,它包含一个 operation
方法。Leaf
类实现了 Component
接口,表示叶子组件。Composite
类也实现了 Component
接口,表示复合组件。Composite
类包含一个子组件列表,可以添加和删除子组件。
为了简化客户端调用,我们为 Component
接口定义了一个扩展函数 performOperation
,它直接调用 operation
方法。这样,客户端代码可以统一地调用 performOperation
方法,而不需要关心对象是叶子组件还是复合组件。这使得客户端代码更简洁、易读。