即使上班再忙,也得抽点时间去学习啊!!!今天着算是马马虎虎吧。
1、策略模式的思想是针对一组算法,将每一种算法都封装到有共同接口的独立类中,通过共有调用类动态调用所有的算法。
2、优点:体现了高内聚低耦合的特性,大大提高了代码的可读性
类结构图:
/** * 定义一个策略接口 */ public interface IStratehy { // 定义共有的方法 public void operate(); }
/** * 第一个实现类 */ public class First implements IStratehy { @Override public void operate() { System.out.println("第一个方法。。。。"); } }
/** * 第二个实现类 */ public class Second implements IStratehy { @Override public void operate() { System.out.println("第二个实现类。。。。"); } }
/** * 第三个实现类 */ public class Third implements IStratehy { @Override public void operate() { System.out.println("第三个方法。。。"); } }
/** * 调用接口的类 */ public class Context { private IStratehy strategy; //构造方法,构造函数,决定你需要调用哪个类,使用接口获取对象 public Context(IStratehy strategy) { this.strategy = strategy; } // 开始调用 public void operate() { this.strategy.operate(); } }
/** * 调用类 */ public class DiaoYongRen { public static void main(String[] args) { Context context; System.out.println("调用第一个方法。。。"); // 获取调用接口的类 context = new Context(new First()); context.operate(); System.out.println("\n"); System.out.println("调用第二个方法。。。"); // 获取调用接口的类 context = new Context(new Second()); context.operate(); System.out.println("\n"); System.out.println("调用第三个方法。。。"); // 获取调用接口的类 context = new Context(new Third()); context.operate(); System.out.println("\n"); } }
总的来说,我感觉策略模式就是简化类的调用方式,并且使得编码更加规范,使得后期的维护扩展工作也更加容易。