1. 定义支付策略接口
interface PaymentStrategy {
fun pay(amount: Double): String
}
2. 实现具体支付策略
支付宝支付
class AliPayStrategy : PaymentStrategy {
override fun pay(amount: Double): String {
return "使用支付宝支付了 $amount 元"
}
}
微信支付
class WeChatPayStrategy : PaymentStrategy {
override fun pay(amount: Double): String {
return "使用微信支付了 $amount 元"
}
}
3. 支付上下文类
class PaymentContext(private val paymentStrategy: PaymentStrategy) {
fun executePayment(amount: Double): String {
return paymentStrategy.pay(amount)
}
}
4. 客户端使用示例
fun main() {
val aliPayContext = PaymentContext(AliPayStrategy())
println(aliPayContext.executePayment(100.0))
val weChatPayContext = PaymentContext(WeChatPayStrategy())
println(weChatPayContext.executePayment(200.0))
}
策略模式在 Kotlin 中的优势
- 代码灵活性和可维护性:Kotlin 支持接口和类的灵活定义,策略模式通过将不同的支付策略封装成独立的类实现
PaymentStrategy
接口,使得代码结构清晰。当需要新增支付方式时,只需创建新的策略类实现接口,无需修改原有代码,符合开闭原则,易于维护和扩展。
- 易于复用:每个策略类都是独立的,在其他地方如果有相同支付策略需求,可以直接复用,提高了代码复用性。
- 简洁的语法:Kotlin 简洁的语法使得策略模式的实现更加直观,例如接口的定义和类的实现都很简洁明了,减少了样板代码。