本文概述
策略模式表示“定义一系列功能, 封装每个功能, 并使它们可互换”。
策略模式也称为策略。
好处
- 它提供了子类的替代。
- 它在自己的类中定义了每种行为, 从而消除了对条件语句的需求。
- 它使得在不更改应用程序的情况下更容易扩展和合并新行为。
用法
- 当多个类别仅在行为上有所不同时, 例如Servlet API。
- 当你需要算法的不同变体时使用它。
(核心Java API)或JSE 7 API中的策略模式:
(Advance Java API)或JEE 7 API中的策略模式:
UML策略模式
战略模式的实施
步骤1:
创建一个策略界面。
//This is an interface.
public interface Strategy {
public float calculation(float a, float b);
}// End of the Strategy interface.
第2步:
创建一个将实现Startegy接口的Addition类。
//This is a class.
public class Addition implements Strategy{
@Override
public float calculation(float a, float b) {
return a+b;
}
}// End of the Addition class.
第三步:
创建一个将实现Startegy接口的Subtraction类。
//This is a class.
public class Subtraction implements Strategy{
@Override
public float calculation(float a, float b) {
return a-b;
}
}// End of the Subtraction class.
步骤4:
创建一个将实现Startegy接口的乘法类。
//This is a class.
public class Multiplication implements Strategy{
@Override
public float calculation(float a, float b){
return a*b;
}
}// End of the Multiplication class.
步骤5:
创建一个上下文类, 该类将从Startegy界面要求执行策略类型。
//This is a class.
public class Context {
private Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public float executeStrategy(float num1, float num2){
return strategy.calculation(num1, num2);
}
}// End of the Context class.
步骤6:
创建一个StartegyPatternDemo类。
//This is a class.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class StrategyPatternDemo {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("Enter the first value: ");
float value1=Float.parseFloat(br.readLine());
System.out.print("Enter the second value: ");
float value2=Float.parseFloat(br.readLine());
Context context = new Context(new Addition());
System.out.println("Addition = " + context.executeStrategy(value1, value2));
context = new Context(new Subtraction());
System.out.println("Subtraction = " + context.executeStrategy(value1, value2));
context = new Context(new Multiplication());
System.out.println("Multiplication = " + context.executeStrategy(value1, value2));
}
}// End of the StrategyPatternDemo class.
输出:
评论前必须登录!
注册