【设计模式】策略模式

  策略模式

 

    神马是策略模式?

      答:它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户

 

      我来说一说我的想法:就好比一辆自动档的汽车,你使用汽车的过程中只管去踩油门,刹车就好了,你完全不用考虑什么时候要换挡,这就好比策略模式中的算法封装,将1档、2档、3档、4档、5档分别封装起来,在汽车行驶过程中让它们之间互相替换,不会影响到驾驶员一样的情况

 


  

  大家请看下面策略模式的结构图

 

 

      在策略模式中,可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,如ConcreteStrategyAConcreteStrategyBConcreteStrategyC,可以称它们为具体策略类。如上图中,这3种具体策略类继承了上面的Strategy类,也叫策略类(为了保证这些具体策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义)。

 

      Context类与Strategy是聚合关系,如果Context类确定了某种算法,会通过Strategy策略类的子类来找到相对应的算法

 

      个人想法:Context类与Strategy是聚合关系,就好比雁群与大雁一样,雁群可以包含大雁,但大雁可以不是雁群的一部分。所以Context类包含Strategy类,在确定好哪种算法后,Context类就可以直接从Strategy类的子类中寻找

 

      以上就是我对策略模式的理解,还请大家多多提出您宝贵的意见!!!

 

评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值