策略设计模式

一、概念

      策略模式定义了一系列算法,并将每一个算法封装起来,而且他们之间可以相互切换,策略模式让算法独立使他的客户端独立而变化。

二、案例

      投资理财:支付宝

      本金10000

      3个月 4.7

      6个月 5.0

      12个月 6.0

      微信

      本金10000

      3个月 5.0

      6个月 12.0

      12个月 15.0

一般写法:
  

    Public class FinaceManager{

      Public enumerateFinace{

      ZHIFUBAO,WEIXIN

}

      Public float zhifubaoFinace(int ,month,int money){

      If(month == 3){

Return money+monry*0.047/12*month}


}

If(month == 6){

Return money+monry*0.05/12*month}


}

if(month == 12){

Return money+monry*0.06/12*month}


}



      Public float weixinFinace(int ,month,int money){

      If(month == 3){

Return money+monry*0.06/12*month}


}

If(month == 6){

Return money+monry*0.12/12*month}


}

if(month == 12){

Return money+monry*0.15/12*month}


}


//获取计算金额

Public fioat finace(int month,int money,Finance finace){

    Switch(finace){

          Case ZHIFUBAO:

                Return zhifubaoFinace(month,money);

          Case WEIXIN:

                Return weixinFinace(month,money);

}

}

}

弊端:

      随着枚举的内容越来越多,那么必将会导致类越来越大。每个利息不一样。因此,建议使用策略模式。

//这个就是采用了策略设计模式,说白了就是在原来的基础上进行了分离。

Public interface Ifinance{

      Float finace(int mounth,int money);

}


Public class zhifubaoFinace implements Ifinance{

      @override

      Float finace(int month.int money){

      If(month == 3){

Return money+monry*0.047/12*month}


}

If(month == 6){

Return money+monry*0.05/12*month}


}

if(month == 12){

Return money+monry*0.06/12*month}

}


}

}

//策略模式的上下文,类似安卓中的上下文。

//可以获取一些额外胡基本信息。--理财有关

//但这s类有点多余,实际开发中可以不写。

Public class FinanceContext{


      Public Ifinance ifnance;  


      Public FinanceContext(IFinance finance){

            This.ifinance =     finance;

}    

      Public float finace(int month,int money){

            Return ifinance.finance(month,money);

}


}

开发中的使用场景?

第三方:

      Glide的缓存策略、ImageLoader的生成图片文件的命名策略,日志打印工具的策略

源码里面:

     属性动画:setInterpolator差值器

     recycleView.setLayoutmanager 可以是ListView也可以椒GlideView.

主要特点:相互切换。

三、Log日志的输出策略

      Timber:可以说是增强版的log,
      使用方式:完整版GitHub可以参考
        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Abednego_子瑜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值