设计模式 -- 策略模式

前言

月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂)

央是一片海洋,海乃百川,代表着一块海绵(吸纳万物)

泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出)

月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容

希望大家一起坚持这个过程,也同样希望大家最终都能从零到零,把知识从薄变厚,再由厚变薄!
 

一、什么是策略模式?

  策略模式,是指对象具有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如某个支付场景,扫码支付之后,可以选择不同的支付方式(包括但不限于支付宝、微信、银行卡或数字人民币等)进行付款。

二、策略模式的优缺点

优点:

1.符合开闭原则,这样我们在修改策略时就不需要在针对if..else 代码块进行调整,而是仅针对需要修改的地方进行调整

2.管理相关算法族,策略类其实就是定义了同一场景下的相类似的算法,通过恰当使用继承可以把公共代码转移到父类里面

缺点:

1.使用者需要知道所有的策略类,这样才能根据所有的场景进行选择

2.策略模式会造成很多策略类,每个具体的策略都会对应产生一个新类,因此也需要根据具体的使用场景的复杂程度来进行思量,避免过度设计

三、策略模式的结构:

 针对于不同的场景,策略模式需要一个对应额策略接口,根据这些不同的场景去实现对应的业务算法

四、策略模式实战

现在小明口渴了,需要去小卖部买瓶冰可乐,当他拿出手机扫码之后,需要选择一种支付方式进行购买。

1.首先构建自己的策略类

2.构建不同的策略类

 

3.构建上下文业务环境包装类

 

4.开始使用

 

5.对应的结果

 

 

五.总结

  策略模式相对于传统的if else方式更加面向对象,对于复杂的业务实现来说,维护起来非常方便,而且我们的jdk源码也有相对应的实现,比如Comparator比较器,以及spring框架中aop的方式,后置处理器的处理等等都用到了策略模式.

  因此,希望大家也多多关注设计模式,让代码更加健壮,让维护更加方便.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值