SpringBoot使用策略模式+工厂模式
为了防止大量的if...else...或switch case代码的出现,可以使用策略模式+工厂模式进行优化。
在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构。代码很简单,如下:
Factory工厂类
@Service
public class ReportFactory {
/**
* 初始化的时候将所有的ReportService自动加载到Map中
*/
@Autowired
private final Map<String, ReportService> reportIns = new ConcurrentHashMap<>();
public ReportService getReportIns(String code) {
ReportService reportInstance = reportIns.get(code);
if (reportInstance == null) {
throw new RuntimeException("未定义reportInstance");
}
return reportInstance;
}
}
接口
public interface ReportService {
String getResult();
}
实现类
@Component(value = "A1")
public class ReportServiceA1 implements ReportService {
@Override
public String getResult() {
return "我是A1";
}
}
@Component(value = "A2")
public class ReportServiceA2 implements ReportService {
@Override
public String getResult() {
return "我是A2";
}
}
测试
@SpringBootTest
public class BlogServerApplicationTest {
@Autowired
ReportFactory reportFactory;
@Test
public void test2() {
String result1 = reportFactory.getReportIns("A1").getResult();
System.out.println("-----------------");
System.out.println(result1);
String result2 = reportFactory.getReportIns("A2").getResult();
System.out.println("-----------------");
System.out.println(result2);
}
}
打印如下:
-----------------
我是A1
-----------------
我是A2
总结
在平时的工作当中,写一些业务代码是无可避免的,但是只要不局限于现状,往往可以发现不一样的乐趣。就像我在报表的业务中学习到了策略模式+工厂模式。
个人博客网址: https://colablog.cn/
如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您

SpringBoot使用策略模式+工厂模式的更多相关文章
- Springboot中实现策略模式+工厂模式
策略模式和工厂模式相信大家都比较熟悉,但是大家有没有在springboot中实现策略和工厂模式? 具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELS ...
- 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式
1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ...
- 《设计模式面试小炒》策略和工厂模式替代业务场景中复杂的ifelse
<设计模式面试小炒>策略和工厂模式替代业务场景中复杂的ifelse 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统, ...
- 简单工厂模式—>工厂模式
一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...
- java模式-工厂模式
今天在学习工厂模式,从最简单的简单工厂模式开始. 我们现在需要通过工厂Factory生产A,B两款产品(都是产品,实现了接口Product). 产品A: public class A implemen ...
- .Net简单工厂模式,工厂模式,抽象工厂模式实例
1.定义 简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口, ...
- [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)
一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...
- php 注册器模式 工厂模式
<?php /** * 注册器模式 * 全局共享和交换对象 */ class Register { public static $objects; // 定义全局数组 // 保存对象到全局数组 ...
- 07@Pattern_Note_LabVIEW工厂模式理解
前言 折腾了一天,基本上搞清楚了简单工厂.工厂模式 理解 无论是简单工厂还是工厂模式,都有一个特点,即工厂加工的方式是不变的,产品的类型可以不断扩展:如果加工方式也会变化,修改工厂模式的加工方式会导致 ...
随机推荐
- 编译安装tree命令
查看当前的tree [12:33:33 root@C8[ ~]#rpm -qi tree Name : tree Version : 1.7.0 Release : 15.el8 Architectu ...
- Python基础知识点整理(详细)
Python知识点整理(详细) 输出函数 print()可以向屏幕打印内容,或者在打开指定文件后,向文件中输入内容 输入函数 input([prompt])[prompt] 为输入的提示字符.该函数返 ...
- 微服务nacos服务注册与发现
一,以上一篇为基础 微服务从nacos配置中心获得配置信息 给service1, service2添加依赖 <dependency> <groupId>com.alibaba. ...
- 关于隐私保护的英文论文的阅读—— How to read English thesis
首先 开始我读论文时 也是恨不得吃透每个单词 但是后来转念一想 没必要每个单词都弄懂 因为 一些程度副词 修饰性的形容词等 这些只能增强语气罢了 对文章主题的理解并没有天大的帮助 而读文章应该首先把握 ...
- 《SQL 必知必会》读书笔记
第1课 了解 SQL 这章主要介绍了数据库,表,字段类型,行,列,主键和SQL等基本概念. 数据库:以某种形式存储的数据集合,在计算机上的表现形式可能是一个文件或者一组文件.我们平时所说的数据库,往往 ...
- A. Peter and Snow Blower 解析(思維、幾何)
Codeforce 613 A. Peter and Snow Blower 解析(思維.幾何) 今天我們來看看CF613A 題目連結 題目 給你一個點\(P\)和\(n\)個點形成的多邊形(照順或逆 ...
- python中使用with操作文件,为什么不需要手动关闭?
python中的with关键字,它是用来启动一个对象的上下文管理器的.它的原理是,当我们使用with去通过open打开文件的时候,它会触发文件对象的上下文管理器, 当with中的代码结束完成之后,去自 ...
- K8S环境快速部署Kafka(K8S外部可访问)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- [Luogu P2827] 蚯蚓 (巧妙的模拟)
题面: 传送门:https://www.luogu.org/problemnew/show/P2827 Solution 看到这题,我们肯定会有一个大胆想法. 那就是直接用堆模拟这个过程. 对于q,我 ...
- redhat 7.4从openssh7.6离线升级openssh8.4p1解决方法
具体需求 这几天生产环境服务器又进行了安全扫描,每次都会报一下漏洞错误.虽然只有一个高危问题,但是每次看到ssh远程漏洞都很烧脑 "主要是里面坑太多了",闲话就不说了,今天我们来看 ...