在 Kotlin 中,组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得客户端对单个对象和复合对象的使用具有一致性。
要实现统一接口,首先需要定义一个公共接口,然后让所有组件(包括单个对象和复合对象)实现这个接口。这样,客户端就可以以相同的方式处理这些对象。
下面是一个简单的 Kotlin 示例,展示了如何使用组合模式实现统一接口:
- 定义一个公共接口
Component
:
interface Component { fun operation() }
- 创建一个实现
Component
接口的叶子节点类Leaf
:
class Leaf : Component { override fun operation() { println("Leaf operation") } }
- 创建一个实现
Component
接口的复合节点类Composite
:
class Composite : Component {
private val children = mutableListOf()
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 main() { val leaf1 = Leaf() val leaf2 = Leaf() val composite = Composite() composite.add(leaf1) composite.add(leaf2) composite.operation() // 输出 "Composite operation" 和 "Leaf operation" }
在这个示例中,我们定义了一个名为 Component
的公共接口,它包含一个名为 operation
的方法。然后,我们创建了一个实现 Component
接口的叶子节点类 Leaf
和一个实现 Component
接口的复合节点类 Composite
。最后,在客户端代码中,我们使用统一接口 operation()
处理单个对象和复合对象。