设计模式详解---策略模式
2023-12-16 23:49:02
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(strategyA);
context.executeStrategy();
// 执行策略2
context.setStrategy(strategyB);
context.executeStrategy();
}
}
3.策略模式应用场景
-
计算器应用:策略模式可以用于计算器应用,其中不同的操作(如加法、减法、乘法、除法)可以表示为不同的策略。通过选择相应的策略,可以根据用户的需求执行不同的计算操作。
-
支付系统:在支付系统中,可以使用策略模式来处理不同的支付方式。每个支付方式(如信用卡、支付宝、微信支付)可以被实现为一个具体的策略,并通过选择相应的策略来完成支付操作。
-
游戏开发:策略模式在游戏开发中也被广泛使用。例如,不同的敌人行为(如进攻、防守、逃跑)可以通过策略模式来实现。每个行为可以作为一个策略,游戏角色根据当前情况选择相应的策略来执行。
文章来源:https://blog.csdn.net/m0_54409739/article/details/135038264
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!