Java设计模式【二十三】:策略模式

192 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

写在前面

设计模式,其实在一定程度上代表着最优解,最佳实践,由一部分开发人员根据经验总结而出的解决方案,分别针对不同的场景的最优解决方案。

在当前环境下,设计模式也被开发人员极为推崇,并且利用其解决众多的问题,所以,学习设计模式刻不容缓。

下面我们就来看一下“策略模式”。

策略模式可是太常见了,而且面试的时候经常被人拿来吹一波,随着吹的人多了,面试官貌似也不怎么问了。

行为型设计模式的一种,主要提供了使某个类可以在代码运行中动态的更改其内部实现逻辑,当然我们要有多个策略类才能够正常切换。

策略模式一直被人们称为和工厂模式结合能完全消除if、else,但是我这里要给大家一个忠告,完全消除if、else是可以的,但是一旦消除后,给我们的开发造成的将会是更棘手的问题。

贸然使用策略模式+工厂模式来取代if、else,将会是噩梦般的灾难。

使用场景

简单说一下策略模式的使用场景吧。

刚才上面我们也说了,策略模式其实就是要更灵活的切换不同策略。

所以如果开发中存在许多相同类别的类,并且这些类之间对外的功效是一致的,比如加密算法,无论哪个加密算法,对外的功效都是加密。

这个时候我们就可以使用策略模式来讲多个实现逻辑分别包装成策略类。

优缺点

策略模式的优点就是可以实现动态的选择策略,并且可以一定程度上的减少if、else的编码。

缺点就是策略类的增多,会给开发人员很大的记忆成本,要做某件事时,需要记忆的东西多了,如果团队中出现新人,需要更多的时间去了解系统代码。