原创:花括号MC(微信公众号:huakuohao-mc),欢迎分享,转载请保留出处。
策略模式常用于一个对象的行为在运行时有多个不同的策略和算法。
举个例子
可以通过实现一个加、减、乘三种不用策略的运算,通过该示例演示策略模式。
先来看一下UML:
来看一下代码如何实现
先来定义一个策略接口
public interface Strategy {
int doOperation(int num1, int num2);
}
分别定义具体的加、减、乘策略,实现策略接口
定义加法策略
public class OperationAdd implements Strategy {
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
减法和乘法策略大同小异,篇幅原因掠过。
定义一个Context方法,根据不同策略执行不同的行为
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
//执行不同的策略
public int executeStrategy(int num1, int num2){
return strategy.doOperation(num1,num2);
}
}
来看一下客户端如何使用
public class StrategyPatternDemo {
public static void main(String[] args){
Context context = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10,5));
context = new Context(new OperationSubstract());
System.out.println("10 - 5 = " + context.executeStrategy(10,5));
context = new Context(new OperationMultiply());
System.out.println("10 * 5 = " + context.executeStrategy(10,5));
}
}
总结
策略模式是行为模式之一,策略模式是用来封装算法的,实践过程中,不仅可以封装算法,任何类型的规则都可以封装。