1. 策略模式简介
策略模式(Strategy Pattern)是一种行为型设计模式,用于在运行时根据不同的情境选择不同的算法或策略。该模式将算法封装成独立的类,使得它们可以相互替换,而且可以独立于客户端使用它们的方式。
1.1.主要角色
- 上下文(Context):负责与客户端进行交互,通常持有一个策略对象的引用,并将客户端的请求委派给策略对象执行。
- 策略(Strategy):定义了一个公共接口,用于封装不同的算法或策略。
- 具体策略(Concrete Strategies):实现了策略接口,提供具体的算法或策略逻辑。
1.2. 工作原理
- 定义一个策略接口,其中包含一个或多个方法用于执行具体的算法或策略。
- 创建具体的策略类,分别实现策略接口,提供不同的算法或策略实现。
- 在上下文类中维护一个策略对象的引用,客户端通过上下文类与策略进行交互。
- 客户端根据需求选择特定的策略对象,并将其传递给上下文类。
- 上下文类在接收到客户端请求后,将请求委派给当前持有的策略对象执行。
2. 策略模式代码设计
/**
* @Author: stukk
* @Description: 定义策略接口
* @DateTime: 2023-12-16 21:46
**/
public interface Strategy {
void execute();
}
/**
* @Author: stukk
* @Description: 执行策略一的代码
* @DateTime: 2023-12-16 21:49
**/
public class ConcreteStrategyA implements Strategy {
@Override
public void execute() {
System.out.println("执行策略一的代码");
}
}
/**
* @Author: stukk
* @Description: 执行策略二的代码
* @DateTime: 2023-12-16 21:49
**/
public class ConcreteStrategyB implements Strategy {
@Override
public void execute() {
System.out.println("执行策略二的代码");
}
}
/**
* @Author: stukk
* @Description: 客户端代码
* @DateTime: 2023-12-16 21:51
**/
public class StrategyDemo {
public static void main(String[] args) {
Strategy strategyA = new ConcreteStrategyA();
Strategy strategyB = new ConcreteStrategyB();
// 执行策略1
Context context = new Context(str服务器托管网ategyA);
context.executeStrategy();
// 执行策略2
context.setStrategy(strategyB);
context.executeStrategy();
}
}
3.策略模式应用场景
-
计算器应用:策略模式可以用于计算器应用,其中不同的操作(如加法、减法、乘法、除法)可以表示为不同的策略。通过选择相应的策略,可以根据用户的需求执行不同的计算操作。
-
支付系统:在支付系统中,可以使用策略模式来处理不同的支付方式。每个支付方式(如服务器托管网信用卡、支付宝、微信支付)可以被实现为一个具体的策略,并通过选择相应的策略来完成支付操作。
-
游戏开发:策略模式在游戏开发中也被广泛使用。例如,不同的敌人行为(如进攻、防守、逃跑)可以通过策略模式来实现。每个行为可以作为一个策略,游戏角色根据当前情况选择相应的策略来执行。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
空间包围检测在计算机图形学、虚拟仿真、工业生产等有着广泛的应用。 现代煤矿开采过程中,安全一直是最大的挑战之一。地质空间中存在诸多如瓦斯积聚、地质构造异常、水文条件不利等隐蔽致灾因素,一旦被触发,可能引发灾难性的后果。因此在安全生产过程中有效的管理和规避各隐蔽…