定义:
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换(继承同一个基类)。策略模式让算法独立于使用它的客户而独立变化。
使用场景:
1.针对同一类型问题的多种处理方式,仅仅是具体行为有差别时。
2.需要安全地封装多种同一类型的操作时。
3.出现同一抽象类有多个子类,而又需要使用if-else或者switch-case来选择具体子类时。
eg:
假设我们计算北京公共出行价格,从昌平沙河地铁站到东直门共25公里。计算公交,地铁,出租的价格。如果是普通的计算的话,可能写在一个方法里,通过if-else来分别计算不同的公共出行方式价格。策略模式则是将每个出行方式抽象出一个基类,然后封装在一个独立的类中,通过传递不同的实现类来解耦。
定义一个抽象的价格计算接口:
image.png
公交车计算策略:
image.png
地铁计算策略:
image.png
具体计算类:
image.png
client:
image.png
如果想加入出租的计算策略,则如下:
image.png
网友评论