在 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(StrategyAFactory(), StrategyBFactory()) val strategies = strategyFactories.map { it.createStrategy() }.toList() strategies.forEach { strategy -> println(strategy.execute()) } }
在这个例子中,我们首先定义了一个策略接口 Strategy
和两个具体的策略实现 StrategyA
和 StrategyB
。接着,我们创建了一个策略工厂接口 StrategyFactory
和两个工厂实现 StrategyAFactory
和 StrategyBFactory
。最后,我们在 main
函数中使用工厂方法动态地创建策略实例并执行它们。
要动态添加新策略,只需创建一个新的工厂实现并将其添加到 strategyFactories
列表中即可。