Java23种设计模式——14.行为型模式之策略模式

Java中除去有设计原则之外,还有23中设计模式。

这些模式都是前辈们一点一点积累下来,一直在改进,一直在优化的,而这些设计模式可以解决一些特定的问题。

并且在这些模式中,可以说是将语言的使用体现的淋漓尽致。

那我们今天要学习  行为型模式  中的  策略模式  !

策略模式

先来看看什么叫策略模式

这个模式百度百科介绍的还是可以的,但是看不太懂,我们举个栗子就可以啦

好比说我们现在要去 A 这个城市,我们可以有很多种方式过去,可以自己开车,或者坐火车,或者汽车,坐飞机等等

就类似上面这种问题,如果我们用条件语句,不仅得写一大堆,而且增加、删除或者替换算法,还得修改原来的代码,不容易维护,违背了开闭原则,但如果采用策略模式就能很好解决该问题。

策略模式的定义与特点

策略(Strategy)模式的定义:该模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,且算法的变化不会影响使用算法的客户。

这种模式的优点:

1. 多重条件语句不易维护,而使用策略模式可以避免使用多重条件语句。

2. 策略模式提供了一系列的可供重用的算法族,恰当使用继承可以把算法族的公共代码转移到父类里面,从而避免重复的代码。

3. 策略模式可以提供相同行为的不同实现,客户可以根据不同时间或空间要求选择不同的。

4. 策略模式提供了对开闭原则的完美支持,可以在不修改原代码的情况下,灵活增加新算法。

5. 策略模式把算法的使用放到环境类中,而算法的实现移到具体策略类中,实现了二者的分离。


其主要缺点如下。

1. 客户端必须理解所有策略算法的区别,以便适时选择恰当的算法类。

2. 策略模式造成很多的策略类。

策略模式的结构与实现

策略模式主要的角色有三个

1. 抽象策略类:定义了一个公共接口,各种不同的算法以不同的方式实现这个接口,环境角色使用这个接口调用不同的算法,一般使用接口或抽象类实现。

2. 具体策略类:实现了抽象策略定义的接口,提供具体的算法实现。

3. 环境类:持有一个策略类的引用,最终给客户端调用。

知道了之后,我们来实现一下我们上面的例子,去 A 这个城市

第一步:

我们先定义好这个抽象的策略类

很简单,我们只需要定义去 A 城市的方法即可

第二步:

第二步我们就需要定义具体的策略实现类,这里我们就定义两个实现类,一个是坐飞机,一个是坐火车

第三步:

有了这些还不够,我们还需要用到一个环境类,这里呢是指将怎么去该地点进行封装,客户可以自己去选择怎么去

测试:

最后一步,我们测试一下,我们好比是一个旅游的人,我们要选择坐飞机的方式去

然后我们运行一下

是OK的,我们坐飞机去了,或者我们可以选择火车

同样,也是OK的,后续我们只需要去创建去 A 城市的方式即可,不需要去修改其他地方的代码。

OK,就到这里,大家好好看一下。多多练习。有问题可以联系我QQ:2100363119

欢迎大家访问我的个人网站:lemon1234.com 感谢大家留言

猜你喜欢

转载自blog.csdn.net/weixin_45908370/article/details/109328505