策略模式比较简单,是指对一系列的算法定义,并将每个算法封装起来,并且使它们还能够相互替换。策略模式让算法独立于使用它的客户而独立变化。算法
模型:微信
策略模式很好理解,这里拿百度网盘举例你们应该更明白了。好比如今的百度网盘普通的用户没有额外的空间,会员会额外的得到2T空间 ,而超级会员额外得到5T空间+各类福利。这也是一种策略,下面用代码演示一下:ide
1.Strategy,抽象的策略,也就是获取的额外的空间this
public interface AbstractStrategy { //获取额外空间的方法 public void getExSpace(); }
2.ConcreteStrategy,也就是普通用户,会员,超级会员spa
public class OrdinaryUser implements AbstractStrategy{ @Override public void getExSpace() { Log.d("qzs","普通用户没有额外的空间获取"); } }
public class Vip implements AbstractStrategy { @Override public void getExSpace() { Log.d("qzs","会员用户有2T额外的空间获取"); } }
public class SuperVip implements AbstractStrategy { @Override public void getExSpace() { Log.d("qzs","超级会员用户有5T额外的空间获取"); } }
3.Context,上下文,为了封装code
public class SpaceContext { private AbstractStrategy abstractStrategy; public SpaceContext(AbstractStrategy abstractStrategy){ this.abstractStrategy=abstractStrategy; } //调用抽象策略角色中的方法 public void getExSpace(){ this.abstractStrategy.getExSpace(); } }
4.调用:对象
SpaceContext spaceContext; //若是是普通用户 spaceContext=new SpaceContext(new OrdinaryUser()); spaceContext.getExSpace(); //若是是会员 spaceContext=new SpaceContext(new Vip()); spaceContext.getExSpace(); //若是是超级会员 spaceContext=new SpaceContext(new SuperVip()); spaceContext.getExSpace();
运行结果:接口
1.优势ip
2.缺点rem
3.适用场景
强调:策略模式在Android中的应用比较典型是Adapter;另外还有策略枚举的应用你们感兴趣的能够本身看一下;具体的应用我会另外写一篇文章来说。
定义和优缺点参考网上信息
另外能够加入个人Android技术交流群:458739310
你们能够关注个人微信公众号:「安卓干货铺」一个有质量、有态度的公众号!