阅读 437

1分钟学习时间,kotlin 非常简单的策略模式

kotlin 非常简单的策略模式

举个栗子

支付,微信,支付宝,银行支付

支付策略

/**
 * @author 鸣人
 * @email huanghao@haioupai.com
 * @date 2021/4/1
 * @describe 支付抽象接口
 */
interface PayStratery {
    fun pay() //调起支付
    fun paySuccess() //支付成功
    fun payFail() //支付失败
}
复制代码

不同类型策略

class AliPayStratery:PayStratery{
    override fun pay() {
        println("支付宝支付发起中...")
    }

    override fun paySuccess() {
        println("支付宝支付成功...")
    }

    override fun payFail() {
        println("支付宝支付失败...")
    }
}

class BankPayStratery:PayStratery{
    override fun pay() {
        println("银行卡支付发起中...")
    }

    override fun paySuccess() {
        println("银行卡支付成功...")
    }

    override fun payFail() {
        println("银行卡支付失败...")
    }
}

class WxPayStratery:PayStratery{
    override fun pay() {
        println("微信支付发起中...")
    }

    override fun paySuccess() {
        println("微信支付成功...")
    }

    override fun payFail() {
        println("微信支付失败...")
    }
}
复制代码

封装一波

object  PayUtil {
    /**
      * @UpdateDate: 2021/4/1 15:56
      * @Description:支付接口
      * @Author:鸣人
      * @param type 支付方式
     */
    fun pay(type:PayStratery){
        type.pay()
    }
}
复制代码

单元测试一波

class ExampleUnitTest {
    @Test
    fun pay() {
        val wx=WxPayStratery()
        PayUtil.pay(wx)
        println("付款中")
        println("付款中")
        println("付款中")
        println("付款中")
        wx.payFail()

    }
}
复制代码

结果

微信支付发起中...
付款中
付款中
付款中
付款中
微信支付失败...

Process finished with exit code 0
复制代码

总结:

优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。

缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

文章分类
Android
文章标签