MST

星途 面试题库

面试题:Kotlin中策略设计模式的实现

请使用Kotlin实现策略设计模式,假设有一个计算不同图形面积的场景,图形包括矩形、圆形。要求定义不同的计算面积策略接口及具体实现类,并在客户端代码中展示如何动态切换不同的计算策略。
35.2万 热度难度
编程语言Kotlin

知识考点

AI 面试

面试题答案

一键面试
// 定义计算面积的策略接口
interface ShapeAreaStrategy {
    fun calculateArea(): Double
}

// 矩形面积计算策略实现类
class RectangleAreaStrategy(private val width: Double, private val height: Double) : ShapeAreaStrategy {
    override fun calculateArea(): Double {
        return width * height
    }
}

// 圆形面积计算策略实现类
class CircleAreaStrategy(private val radius: Double) : ShapeAreaStrategy {
    override fun calculateArea(): Double {
        return Math.PI * radius * radius
    }
}

// 客户端代码
class ShapeCalculator(private var strategy: ShapeAreaStrategy) {
    fun setStrategy(strategy: ShapeAreaStrategy) {
        this.strategy = strategy
    }

    fun calculateArea(): Double {
        return strategy.calculateArea()
    }
}
fun main() {
    // 使用矩形策略
    val rectangleCalculator = ShapeCalculator(RectangleAreaStrategy(5.0, 3.0))
    println("矩形面积: ${rectangleCalculator.calculateArea()}")

    // 切换到圆形策略
    rectangleCalculator.setStrategy(CircleAreaStrategy(4.0))
    println("圆形面积: ${rectangleCalculator.calculateArea()}")
}