策略模式
策略模式是为了方便替换封装好的算法,和工厂模式有相似的地方,区别在于工厂模式目的是选择对象,策略模式是替换算法。
先写一个接口
public interface operation { int getResult(int a,int b); }
然后两个算法实现
public class operationAdd implements operation{ public int getResult(int a, int b) { return a+b; } } public class operationSub implements operation{ public int getResult(int a, int b) { return a-b; } }
再写一个上下文类
public class context { private operation op; public setOp(operation op) { this.op=op; } public int getResult(int a,int b) { return op.getResult(a, b); } }
最后测试
public static void main(String[] args) { context c=new context(); c.setOp(new operationAdd()); System.out.println(c.getResult(2, 5)); c.setOp(new operationSub()); System.out.println(c.getResult(2, 5)); }
另外,策略模式可以很简单工厂很好的结合,比如可以通过String的传入决定context要set什么。