个性化阅读
专注于IT技术分析

策略模式

本文概述

策略模式表示“定义一系列功能, 封装每个功能, 并使它们可互换”。

策略模式也称为策略。


好处

  • 它提供了子类的替代。
  • 它在自己的类中定义了每种行为, 从而消除了对条件语句的需求。
  • 它使得在不更改应用程序的情况下更容易扩展和合并新行为。

用法

  • 当多个类别仅在行为上有所不同时, 例如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.

输出:

策略模式
赞(0)
未经允许不得转载:srcmini » 策略模式

评论 抢沙发

评论前必须登录!