设计模式:策略模式
最编程
2024-05-04 22:26:55
...
一,策略模式
策略模式(Strategy Pattern)是一种常用的软件设计模式,属于行为型模式。它的目的是定义一系列算法,并将每个算法封装起来让它们可以互换使用,算法的变化不会影响使用算法的用户。策略模式常用于创建一组可互换的算法,客户端可以根据需要选择不同的算法。
二,特点
-
封装性:每个算法都被封装在独立的策略类中,这些类通常实现了相同的接口。
-
可互换性:客户端可以通过切换不同的策略实现来改变算法,而不需要修改依赖算法的代码。
-
灵活性:策略模式使得算法的变化独立于使用算法的客户端。
-
易于扩展:可以很容易地添加新的策略,而不需要修改现有代码。
三,组成部分
- Strategy接口:定义了一个或多个方法,这些方法是策略的具体实现。
- ConcreteStrategy:实现了Strategy接口的具体策略类。
- Context:使用Strategy对象的类,它维持一个对Strategy对象的引用,并定义了一个方法用于访问Strategy对象的策略方法。
四,实现步骤
- 定义
Strategy
接口,包含算法的方法。 - 创建具体的策略类,实现
Strategy
接口,并实现具体的算法。 - 定义
Context
类,它有一个Strategy
类型的成员变量,用于持有策略对象,并有一个方法用于执行策略。 - 客户端代码根据需要选择并初始化相应的策略对象,并将其传递给
Context
。
五,代码
interface Strategy {
public int doOperation(int a,int b);
}
class OperationAdd implements Strategy{
@Override
public int doOperation(int a, int b) {
return a + b;
}
}
class OperationSubstract implements Strategy{
@Override
public int doOperation(int a, int b) {
return a - b;
}
}
class OperationMultiply implements Strategy{
@Override
public int doOperation(int a, int b) {
return a*b;
}
}
class Context{//Context类是核心
Strategy strategy;
public Context(Strategy strategy){
this.strategy = strategy;
}
public void setStrategy(Strategy strategy) {
this.strategy = strategy;
}
public int cal(int a,int b){
return strategy.doOperation(a,b);
}
}
public class StrategyDemo{
public static void main(String[] args) {
Context context = new Context(new OperationAdd());
System.out.println(context.cal(2, 3));
context =new Context(new OperationMultiply());
System.out.println(context.cal(3, 4));
}
}
推荐阅读
-
设计模式:策略模式
-
单片机学习路径中的一些常见疑问也是我的个人学习总结 - 输入模式
-
STM32 HSE 模式分配(旁路模式、非旁路模式)
-
针对 STM32F411 的 HSI 和 HSE 启动模式切换与仿真
-
STM32 - 时钟、HSE、旁路模式、有源晶振
-
清华推出大型基座模型 ChatGLM3,多模式性能堪比 GPT-4V
-
团购中介营销模式:酒企如何开展圈层营销?
-
PostgreSQL DaaS 设计说明--模式与数据库的选择
-
Atitit 导航模式 面包屑胶囊标签 目录 1.1. 表格导航 1 2.面包屑导航源于童话故事《韩赛尔》,他用面包屑来追踪回家的路 1 2.1.1.
-
观察者设计模式 - 猫和老鼠