策略模式

策略模式是为了方便替换封装好的算法,和工厂模式有相似的地方,区别在于工厂模式目的是选择对象,策略模式是替换算法。

先写一个接口

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什么。

原文地址:https://www.cnblogs.com/blogofjzq/p/9454048.html