在 Kotlin 中,策略模式可以通过使用接口和继承来实现。要动态添加新策略,你可以使用工厂方法或者依赖注入。这里有一个简单的例子来说明如何使用工厂方法动态添加新策略:
interface Strategy {
fun execute(): String
}
class StrategyA : Strategy {
override fun execute(): String {
return "Strategy A executed"
}
}
class StrategyB : Strategy {
override fun execute(): String {
return "Strategy B executed"
}
}
interface StrategyFactory {
fun createStrategy(): Strategy
}
class StrategyAFactory : StrategyFactory {
override fun createStrategy(): Strategy {
return StrategyA()
}
}
class StrategyBFactory : StrategyFactory {
override fun createStrategy(): Strategy {
return StrategyB()
}
}
fun main() {
val strategyFactories = listOf<StrategyFactory>(StrategyAFactory(), StrategyBFactory())
val strategies = strategyFactories.map { it.createStrategy() }.toList()
strategies.forEach { strategy ->
println(strategy.execute())
}
}
在这个例子中,我们首先定义了一个策略接口 Strategy
和两个具体的策略实现 StrategyA
和 StrategyB
。接着,我们创建了一个策略工厂接口 StrategyFactory
和两个工厂实现 StrategyAFactory
和 StrategyBFactory
。最后,我们在 main
函数中使用工厂方法动态地创建策略实例并执行它们。
要动态添加新策略,只需创建一个新的工厂实现并将其添加到 strategyFactories
列表中即可。