必知必会的设计模式7

策略模式(Strategy Pattern)

属行为类设计模式,「定义一组算法,将每个算法封装起来,并且使它们之间可以互换」

怎么来理解呢?其实就是做某件事有很多种方法,但不管什么方法,本质都是完成某件事。那么具体的方法就叫做策略。那何来的封住呢?这里需要借助一个上下文的概念,持有策略对象,所以对外部使用来说就封装了。

策略模式其实运用了面向对象的封装和多态。上下文类起到了封装作用,而策略类表现着多态的特性。

策略模式.jpeg

优缺点

  • 可以根据实际情况灵活切换策略
  • 避免使用多重条件判断
    这点也是实际项目中最实用的,假如条件语句碰上复杂逻辑,那么代码就会变得臃肿,不但不方便阅读维护,扩展起来也是头疼不已。用上策略模式,不仅扩展性增强不少,而且阅读起来一点也不费劲,一口气读完。
  • 缺点是类代码增多了,并且策略不宜太多,多了反而也变得不合适了。

适用场景

  • 前面说了,最适合用的就是复杂逻辑加上多条件语句。
  • 一个系统对应多个用户角色,不同角色可以对应一个策略。
  • 系统需要根据实际情况动态切换方案的情况。

在 Android 中的使用

我所知道的明显使用策略模式的好像找不出来(也可能是我了解的太肤浅了),书中提到了一点就是 Android 动画的插值器,根据具体的情况可以选用不同的插值器。

参考内容

「设计模式之禅(第 2 版)」
「Android 源码设计模式解析与实战」

你可能感兴趣的:(必知必会的设计模式7)