概述:定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化
角色:
Strategy 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法ConcreteStrategy 以Strategy接口实现某具体算法Context 用一个ConcreteStrategy对象来配置。 维护一个对Strategy对象的引用。可定义一个接口来让Stategy访问它的数据类图:
实现: 算法公共接口
/** * 模拟算法 */ interface MathCopy { public void method(); }算法实现:
public class Add implements MathCopy { @Override public void method() { System.out.println("做加法"); } } public class Mins implements MathCopy { @Override public void method() { System.out.println("做减法"); } }Context
public class Context { MathCopy mathCopy; public Context(MathCopy mathCopy){ this.mathCopy = mathCopy; } public void doIt(){ this.mathCopy.method(); } }测试
public class testStrategy { public static void main(String[] args) { MathCopy m = new Mins(); Context context = new Context(m); context.doIt(); } }打印: 做减法