为了防止大量的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使用策略模式+工厂模式的更多相关文章

  1. Springboot中实现策略模式+工厂模式

    策略模式和工厂模式相信大家都比较熟悉,但是大家有没有在springboot中实现策略和工厂模式? 具体策略模式和工厂模式的UML我就不给出来了,使用这个这两个模式主要是防止程序中出现大量的IF ELS ...

  2. 在商城系统中使用设计模式----简单工厂模式之在springboot中使用简单工厂模式

    1.前言: 不了解简单工厂模式请先移步:在商城中使用简单工厂.在这里主要是对springboot中使用简单工厂模式进行解析. 2.问题: 什么是简单工厂:它的实现方式是由一个工厂类根据传入的参数,动态 ...

  3. 《设计模式面试小炒》策略和工厂模式替代业务场景中复杂的ifelse

    <设计模式面试小炒>策略和工厂模式替代业务场景中复杂的ifelse 我是肥哥,一名不专业的面试官! 我是囧囧,一名积极找工作的小菜鸟! 囧囧表示:小白面试最怕的就是面试官问的知识点太笼统, ...

  4. 简单工厂模式—>工厂模式

    一.功能 根据前一篇博客:策略模式+单例模式+简单工厂模式:推送服务,想试用一下工厂模式:将之前的简单工厂模式格式化为工厂模式. 二.实现 修改前:简单工厂 public static class P ...

  5. java模式-工厂模式

    今天在学习工厂模式,从最简单的简单工厂模式开始. 我们现在需要通过工厂Factory生产A,B两款产品(都是产品,实现了接口Product). 产品A: public class A implemen ...

  6. .Net简单工厂模式,工厂模式,抽象工厂模式实例

    1.定义   简单工厂模式:是由一个工厂对象决定创建出哪一种产品类的实例.简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现. 工厂模式:定义一个用于创建对象的接口, ...

  7. [19/04/23-星期二] GOF23_创建型模式(工厂模式、抽象工厂模式)

    一.工厂模式(分为:简单工厂模式.工厂方法模式.抽象工厂模式) 实现了创建者和调用者的分离 核心本质:1.实例化对象,用工厂方法代替new操作:2.将选择实现类.创建对象统一管理和控制,从而将调用者跟 ...

  8. php 注册器模式 工厂模式

    <?php /** * 注册器模式 * 全局共享和交换对象 */ class Register { public static $objects; // 定义全局数组 // 保存对象到全局数组 ...

  9. 07@Pattern_Note_LabVIEW工厂模式理解

    前言 折腾了一天,基本上搞清楚了简单工厂.工厂模式 理解 无论是简单工厂还是工厂模式,都有一个特点,即工厂加工的方式是不变的,产品的类型可以不断扩展:如果加工方式也会变化,修改工厂模式的加工方式会导致 ...

随机推荐

  1. python 操作conf配置文件方法

    参考文章链接:https://blog.csdn.net/qq_23587541/article/details/85019610

  2. 500G Python从入门到进阶的视频资料

    第一部分:Python资源500G百度网盘学习视频300+本电子书需要的小伙伴可以叫小编的Q群867067945 点击展开,查看完整图片 回复关键字:学习第二部分:Python就业指导 更多更详细的就 ...

  3. maven 配置文件 settings.xml pom.xml

    maven涉及的配置文件一般有三个:(作用范围依次减小,优先级依次升高) 全局配置(maven安装包中):${M2_HOME}/conf/settings.xml 用户配置(该文件是拷贝全局配置而来的 ...

  4. 【Python 1-0】10个学习Python的理由以及Python的优势有哪些?

    Python的由来 首发地址 Python的创始人是吉多·范罗苏姆,1989年他在阿姆斯特丹的CWI工作,圣诞节期间,吉多·范罗苏姆为了打发圣诞节的无聊,决定开发一个新的脚本解释程序,作为ABC 语言 ...

  5. STM32入门系列-启动文件介绍

    在启动文件内部使用的都是汇编语言,这个文件的作用是负责执行微控制器从"复位"到"开始执行 main 函数"中间这段启动时间所必须进行的工作.它完成的具体工作有: ...

  6. php socket通信的简单实现

    socket通信的原理在这里就不说了,它的用途还是比较广泛的,我们可以使用socket来做一个API接口出来,也可以使用socket来实现两个程序之间的通信,我们来研究一下在php里面如何实现sock ...

  7. 《Clojure编程》笔记 第2章 函数式编程

    目录 背景简述 第2章 函数式编程 背景简述 本人是一个自学一年Java的小菜鸡,理论上跟大多数新手的水平差不多,但我入职的新公司是要求转Clojure语言的.坊间传闻:通常情况下,最好是有一定Jav ...

  8. MySQL索引分析及使用

    一.索引介绍 1.1.什么是索引? 一般的应用系统,读写比例在10:1左右,而且插入操作和一般的更新操作很少出现性能问题,在生产环境中,我们遇到最多的,也是最容易出问题的,还是一些复杂的查询操作,因此 ...

  9. Python 1-5】Python教程之——字符串

    字符串或串(String)是由数字.字母.下划线组成的一串字符. 字符串 字符串就是一系列字符.在Python中,用引号括起的都是字符串,其中的引号可以是单引号, 也可以是双引号,如下所示: &quo ...

  10. R语言删除不规范的值(或NA)

    在使用R语言处理表格时(xlsx, csv),有时里面含有缺失值,或者不规范的数值,比如下图有许多的问号"?",为了便于处理数据,这些都应该整行地删掉. 为了删掉那些包含" ...