设计模式是对事物抽象整理的一种设计思想,他们通过相互组合形成程序设计。策略模式定义自己查就不说了,直接代码体现.
1.设置策略模式算法接口
package com.directional.viewpager.sample.stratery; /** * @version V:2.0.0 * @Title IStatery * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:47 */ public interface IFlyStatery { void doFly(); }
2.对接口实现一系列策略算法
package com.directional.viewpager.sample.stratery; import android.util.Log; /** * @Title BirdFlyStatery * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:48 */ public class BirdFlyStatery implements IFlyStatery { @Override public void doFly() { Log.e("Emerson","小鸟高飞!!!!!"); } }
package com.directional.viewpager.sample.stratery; import android.util.Log; /** * @version V:2.0.0 * @Title ChikenFlyStrategy * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:50 */ public class ChikenFlyStrategy implements IFlyStatery { @Override public void doFly() { Log.e("Emerson","小鸡低飞¥¥¥¥¥¥¥¥"); } }3.事物实例
package com.directional.viewpager.sample.stratery; /** * @version V:2.0.0 * @Title Bird * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:54 */ public class Bird extends FlyModel { public Bird(){ super(); super.setIFyStatery(new BirdFlyStatery()); } }
package com.directional.viewpager.sample.stratery; /** * @version V:2.0.0 * @Title Bird * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:54 */ public class Chiken extends FlyModel { public Chiken(){ super(); super.setIFyStatery(new ChikenFlyStrategy()); } }
3.设置模板模式模板类
package com.directional.viewpager.sample.stratery; import android.util.Log; /** * @author zhanghongfei * @version V:2.0.0 * @Title FlyModel * @Package com.directional.viewpager.sample.stratery * @Description: * @date 2016/9/9 9:51 */ public abstract class FlyModel{ private IFlyStatery mIFyStatery; public void setIFyStatery(IFlyStatery iFyStatery){ mIFyStatery = iFyStatery; } public void executeFeature(){ fly(); feed(); } public void fly(){ mIFyStatery.doFly(); } public void feed(){ Log.e("Emerson","-------------feed"); } }
4.调用java测试,
FlyModel bird =newBird();
FlyModel chiken = new Chiken(); bird.executeFeature(); chiken.executeFeature();