本文概述
- 好处
- 用法
- UML策略模式
- 战略模式的实施
策略模式也称为策略。
好处
- 它提供了子类的替代。
- 它在自己的类中定义了每种行为, 从而消除了对条件语句的需求。
- 它使得在不更改应用程序的情况下更容易扩展和合并新行为。
- 当多个类别仅在行为上有所不同时, 例如Servlet 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 Subtractionimplements 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.
输出:
文章图片
推荐阅读
- 结构设计模式
- 状态模式
- Java中的单例设计模式
- 代理模式
- 原型设计模式
- 观察者模式
- 对象池模式
- Android PullToRrefresh 自定义下拉刷新动画 (listviewscrollview等)
- POJ2385Apple Catching(简单DP)