前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpringBoot使用策略模式+工厂模式

SpringBoot使用策略模式+工厂模式

作者头像
Johnson木木
发布2020-11-26 11:54:10
1.2K0
发布2020-11-26 11:54:10
举报
文章被收录于专栏:猿小俊猿小俊

为了防止大量的if...else...switch case代码的出现,可以使用策略模式+工厂模式进行优化。 在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构。代码很简单,如下:

Factory工厂类

代码语言:javascript
复制
@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;
    }

}

接口

代码语言:javascript
复制
public interface ReportService {
    String getResult();
}

实现类

代码语言:javascript
复制
@Component(value = "A1")
public class ReportServiceA1 implements ReportService {

    @Override
    public String getResult() {
        return "我是A1";
    }
}
代码语言:javascript
复制
@Component(value = "A2")
public class ReportServiceA2 implements ReportService {

    @Override
    public String getResult() {
        return "我是A2";
    }
}

测试

代码语言:javascript
复制
@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);
    }
}

打印如下:

代码语言:javascript
复制
-----------------
我是A1
-----------------
我是A2

总结

在平时的工作当中,写一些业务代码是无可避免的,但是只要不局限于现状,往往可以发现不一样的乐趣。就像我在报表的业务中学习到了策略模式+工厂模式。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Factory工厂类
  • 接口
  • 实现类
  • 测试
  • 总结
相关产品与服务
腾讯云 BI
腾讯云 BI(Business Intelligence,BI)提供从数据源接入、数据建模到数据可视化分析全流程的BI能力,帮助经营者快速获取决策数据依据。系统采用敏捷自助式设计,使用者仅需通过简单拖拽即可完成原本复杂的报表开发过程,并支持报表的分享、推送等企业协作场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档