策略模式是一种广泛使用并且非常有用的模式,主要在于它的多功能性,因为它可以在许多情况下应用。
举个例子:有个购物App,假定有3种支付方式——花呗、货到付款和商家自己的支付系统。使用花呗的人需要支付花呗手续费,使用货到付款的人只需按照定价支付,使用商家自己的支付系统的人将获得10%的折扣。
现在我们使用策略模式来完成这个功能的开发。
①从写一个接口开始
interface Strategy {
//处理付款
fun processPayment(price:Float):String
}
②创建这个接口的具体实现
/**
* 商家自己的支付,策略接口实现类
*/
class AppPay:Strategy {
override fun processPayment(price: Float): String {
return String.format("%.2f",price*0.9f)
}
}
/**
* 花呗,策略接口实现类
*/
class AntCreditPay:Strategy {
override fun processPayment(price: Float): String {