1分钟学习时间,kotlin 非常简单的策略模式
发布于 2022年 03月 02日 04:57
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、所有策略类都需要对外暴露。