策略模式

本文概述

  • 好处
  • 用法
  • UML策略模式
  • 战略模式的实施
策略模式表示“定义一系列功能, 封装每个功能, 并使它们可互换”。
策略模式也称为策略。
好处
  • 它提供了子类的替代。
  • 它在自己的类中定义了每种行为, 从而消除了对条件语句的需求。
  • 它使得在不更改应用程序的情况下更容易扩展和合并新行为。
用法
  • 当多个类别仅在行为上有所不同时, 例如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 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.

输出:
策略模式

文章图片

    推荐阅读