策略模式(Strategy Pattern)
属行为类设计模式,「定义一组算法,将每个算法封装起来,并且使它们之间可以互换」
怎么来理解呢?其实就是做某件事有很多种方法,但不管什么方法,本质都是完成某件事。那么具体的方法就叫做策略。那何来的封住呢?这里需要借助一个上下文的概念,持有策略对象,所以对外部使用来说就封装了。
策略模式其实运用了面向对象的封装和多态。上下文类起到了封装作用,而策略类表现着多态的特性。
策略模式.jpeg优缺点
- 可以根据实际情况灵活切换策略
- 避免使用多重条件判断
这点也是实际项目中最实用的,假如条件语句碰上复杂逻辑,那么代码就会变得臃肿,不但不方便阅读维护,扩展起来也是头疼不已。用上策略模式,不仅扩展性增强不少,而且阅读起来一点也不费劲,一口气读完。 - 缺点是类代码增多了,并且策略不宜太多,多了反而也变得不合适了。
适用场景
- 前面说了,最适合用的就是复杂逻辑加上多条件语句。
- 一个系统对应多个用户角色,不同角色可以对应一个策略。
- 系统需要根据实际情况动态切换方案的情况。
在 Android 中的使用
我所知道的明显使用策略模式的好像找不出来(也可能是我了解的太肤浅了),书中提到了一点就是 Android 动画的插值器,根据具体的情况可以选用不同的插值器。
参考内容
「设计模式之禅(第 2 版)」
「Android 源码设计模式解析与实战」
网友评论