MST
星途 面试题库

面试题:Kotlin 中如何使用策略模式

请用 Kotlin 代码实现一个简单的策略模式示例,假设有不同的支付方式(如支付宝支付、微信支付),每种支付方式是一个具体的策略,客户端可以根据需求选择不同的支付策略进行支付操作。并简要说明策略模式在 Kotlin 中的优势。
15.9万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试

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 简洁的语法使得策略模式的实现更加直观,例如接口的定义和类的实现都很简洁明了,减少了样板代码。