当前位置: 首页 > news >正文

Spring boot 策略模式

public abstract class Node {/*** 执行** @param a* @param b* @return*/public abstract Integer execute(int a, int b);
}
package my.node;import org.springframework.stereotype.Component;@Component("exec")
public class ExecNode extends Node {@Overridepublic Integer execute(int a, int b) {return a + b;}
}
package my.node;import org.springframework.stereotype.Component;@Component("todo")
public class TodoNode extends Node {@Overridepublic Integer execute(int a, int b) {return a + b;}
}

工厂

package my;import my.node.Node;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.Map;
import java.util.Optional;@Component
public class NodeFactory {/*** Spring会自动将Strategy接口的实现类注入到这个Map中,key为bean id,value值则为对应的策略实现类*/@Autowiredprivate Map<String, Node> nodeMap;/*** 获取相应的节点** @param nodeName* @return*/public Node getNode(String nodeName) {Node targetNode = Optional.ofNullable(nodeMap.get(nodeName)).orElseThrow(() -> new IllegalArgumentException("Invalid Operator"));return targetNode;}
}

使用

package my;import my.node.Node;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = MyApplication.class)
@WebAppConfiguration
public class CommandFactoryTest {@Autowiredprivate NodeFactory nodeFactory;@Testpublic void execute() throws Exception {Node node = nodeFactory.getNode("exec");}}

相关文章:

  • AI重构SEO关键词精准定位
  • 唯创WT2606B TFT显示灵动方案,重构电子锁人机互动界面,赋能智能门锁全场景交互!
  • 计算机网络 - 关于IP相关计算题
  • C++23 <spanstream>:基于 std::span 的高效字符串流处理
  • 如何通过创新科技手段打造美术馆展厅互动体验,提升观众沉浸感?
  • 变色龙Ultra编译指南:从零开始
  • C#与 Prism 框架:构建模块化的 WPF 应用程序
  • C语言进阶--数据的存储
  • WSL中ubuntu通过Windows带代理访问github
  • Vue 实例生命周期
  • YOLOv5 详解:从原理到实战的全方位解析
  • DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集
  • mongodb集群之副本集
  • WPF学习
  • 博图SCL基础知识-寻址调用及新建SCL
  • 【Linux网络篇】:简单的TCP网络程序编写以及相关内容的扩展
  • Web攻防-SQL注入增删改查HTTP头UAXFFRefererCookie无回显报错
  • 光谱相机在生态修复监测中的应用
  • 虚幻GamePlay框架
  • 本地部署RAGFlow
  • 做户外的网站/厦门seo公司
  • 企业网站优化是什么/广告网站留电话不用验证码
  • 网站做的好的公司有/种子搜索神器网页版
  • wordpress多级分类文章/广州宣布5条优化措施
  • 具有价值的网站制作/西安百度推广开户多少钱
  • 中国工信部网站备案/搜索引擎调词平台多少钱