策略模式比較簡單,是指對一系列的算法定義,並將每個算法封裝起來,並且使它們還能夠相互替換。策略模式讓算法獨立於使用它的客戶而獨立變化。算法
模型:微信
策略模式很好理解,這裏拿百度網盤舉例你們應該更明白了。好比如今的百度網盤普通的用戶沒有額外的空間,會員會額外的得到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
你們能夠關注個人微信公衆號:「安卓乾貨鋪」一個有質量、有態度的公衆號!