在Kotlin中,裝飾器模式(Decorator Pattern)是一種結構型設計模式,它允許你在不修改原始類的情況下,動態地為對象添加新的功能。這是通過創建一個包裝類來實現的,這個包裝類包含一個指向原始對象的引用,并實現與原始對象相同的接口。然后,你可以在包裝類中添加新的功能。
以下是一個簡單的Kotlin裝飾器模式示例:
interface Component {
fun operation(): String
}
class ConcreteComponent : Component {
override fun operation(): String {
return "ConcreteComponent operation"
}
}
abstract class Decorator(private val component: Component) : Component {
override fun operation(): String {
return component.operation()
}
}
class ConcreteDecoratorA(component: Component) : Decorator(component) {
override fun operation(): String {
return "ConcreteDecoratorA(${component.operation()})"
}
}
class ConcreteDecoratorB(component: Component) : Decorator(component) {
override fun operation(): String {
return "ConcreteDecoratorB(${component.operation()})"
}
}
fun main() {
val component = ConcreteComponent()
val decoratorA = ConcreteDecoratorA(component)
val decoratorB = ConcreteDecoratorB(decoratorA)
println(decoratorB.operation()) // 輸出: ConcreteDecoratorB(ConcreteDecoratorA(ConcreteComponent operation))
}
在這個示例中,我們首先創建了一個ConcreteComponent
類,它實現了Component
接口。然后,我們創建了一個抽象裝飾器類Decorator
,它也實現了Component
接口,并包含一個指向Component
的引用。接下來,我們創建了兩個具體的裝飾器類ConcreteDecoratorA
和ConcreteDecoratorB
,它們分別添加了不同的功能。最后,我們使用這些裝飾器為ConcreteComponent
對象添加了新功能,并在控制臺輸出了結果。