策略模式
定義一系列的算法,把它們一個個封裝起來, 並且使這些算法可以在運行時根據不同需要調整。
- 優點:
- 算法可以自由切換。
- 避免使用多重條件判斷。
- 擴展性良好。
- 缺點:
- 策略類會增多。
- 所有策略類都需要對外暴露。
// 策略
public interface Strategy {
public int doOperation(int num1, int num2);
}
// 加策略
public class Plus implements Strategy{
@Override
public int doOperation(int num1, int num2) {
return num1 + num2;
}
}
// 減策略
public class Substract 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 Demo {
public static void main(String[] args) {
Context context1 = new Context(new OperationAdd());
System.out.println("10 + 5 = " + context.executeStrategy(10, 5));
Context context2 = new Context(new OperationSubstract());
System.out.println("10 - 5 = " + context.executeStrategy(10, 5));
}
}