策略模式
class Cashier(discount: Double => Double, originalPrice: Double) {
val discountedPrice: Double = discount(originalPrice)
}
object Cashier {
def apply(discount: Double => Double, price: Double): Cashier = new Cashier(discount, price)
}
object Client {
def main(args: Array[String]): Unit = {
val dis8 = (s: Double) => s * 0.9
val dis9 = (p: Double) => p * 0.8
val d8 = Cashier(dis8, 100)
val d9 = Cashier(dis9, 200)
println(d8.discountedPrice)
println(d9.discountedPrice)
}
}
执行结果
90.0
160.0
Process finished with exit code 0