设计模式(22)--策略模式

来源:互联网 发布:c4d r17 mac安装教程 编辑:程序博客网 时间:2024/06/04 20:38

什么是策略模式?
在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。
在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

什么时候使用策略模式?
1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现

如何实现?

public interface Strategy {    public int doOperation(int num1, int num2);}
public class OperationAdd implements Strategy {    public int doOperation(int num1, int num2) {        return num1+num2;    }}
public class OperationMultiply implements Strategy {    public int doOperation(int num1, int num2) {        return num1*num2;    }}
public class OperationSubstract implements Strategy {    public int doOperation(int num1, int num2) {        return num1-num2;    }}
public class Context {    private Strategy strategy;    public Context(Strategy strategy){        this.strategy = strategy;    }    public  int excuteStrategy(int num1, int num2){        return strategy.doOperation(num1, num2);    }}
public class Client {    public static void main(String[] args){        Context context = new Context(new OperationAdd());        System.out.println(context.excuteStrategy(6,5));        context = new Context(new OperationMultiply());        System.out.println(context.excuteStrategy(6,5));        context = new Context(new OperationSubstract());        System.out.println(context.excuteStrategy(6,5));    }}
原创粉丝点击