描述
策略模式中,一个策略类的行为或方法,可以在运行时更改。
解释一下:假设我们有一个游戏策略生成器,输入不同情况,就会产生不同对应策略出来,这就是策略模式。即我们只需要建立一个策略器,就能在不同状况下得到不同策略。
实例
interface MathAlgorithm {
public int calculate(int num1, int num2);
}
class MathAdd implements MathAlgorithm{
@Override
public int calculate(int num1, int num2) {
return num1 + num2;
}
}
class MathSubstract implements MathAlgorithm{
@Override
public int calculate(int num1, int num2) {
return num1 - num2;
}
}
class MathMultiply implements MathAlgorithm{
@Override
public int calculate(int num1, int num2) {
return num1 * num2;
}
}
//相当于一个策略生成器
class MathContext {
private MathAlgorithm algorithm;
public MathContext(MathAlgorithm strategy){
this.algorithm = strategy;
}
public int execute(int num1, int num2){
return algorithm.calculate(num1, num2);
}
}
public class Main {
public static void main(String[] args) {
MathContext context = new MathContext(new MathAdd());
System.out.println("10 + 5 = " + context.execute(10, 5));
context = new MathContext(new MathSubstract());
System.out.println("10 - 5 = " + context.execute(10, 5));
context = new MathContext(new MathMultiply());
System.out.println("10 * 5 = " + context.execute(10, 5));
}
}
代码来源:特别感谢 w3school java设计模式之策略模式