策略模式

一、程序中的策略
就是对各个算法的一个封装「不是实现算法,而是封装算法」,让客户端非常容易的调用,省掉了客户端 if else 恶心的判断,让客户端独立于各个策略;使用一个策略模式,定义一个抽像策略,然后把各个请求策略封装,客户想使用哪个就使用哪个,非常灵活和方便。策略模式和简单工厂很相似,确有不同,策略是一种行为模式,而简单工厂是创建型模式「创建对象」。
二、策略模式的定义
策略是对算法的封装,是一种形为模式,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。
三、策略的特点
是一种行为模式,对算法封装,使得客户端独立于各个策略
扩展性强,添加策略无非就是添加一个具体的实现类而已,代价非常低。
四、策略模式的结构
Strategy :抽象的策略, 是一个接口或抽象类。
ConcreteStrategy: 具体的策略类,实现了抽象的策略。
Context :一个普通的类, 上下文环境,持有 Stragegy 的引用。
五、策略模式和简单工厂模式的区分
策略模式和简单工厂非常相似,结构基本上一样,但是它们侧重点不一样。
策略模式:是一个行为模式,解决策略的切换和扩展,让策略独立于客户端。
简单工厂模式:是一种创建模式「创建对象」,接收指令创建出具体的对象,让对象的创建和具体的使用客户无关。
但是我们在策略模式中可以使用简单工厂模式,【把生成策略这一过程使用工厂去实现,这样好不好呢?适合就是最好的】
六、策略模式的优缺点
既然策略模式使用这么广泛,那么策略模式是不是就是无敌了呢,没有一点点缺点?肯定不是的。
优点:
1、结构清晰,把策略分离成一个个单独的类「替换了传统的 if else」
2、代码耦合度降低,安全性提高「各个策略的细节被屏蔽」
缺点:
1、客户端必须要知道所有的策略类,否则你不知道该使用那个策略,所以策略模式适用于提前知道所有策略的情况下
2、增加了类的编写,本来只需要 if else 即可「但是这是所有模式和架构的通病呀」

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值