其他分享
首页 > 其他分享> > 49

49

作者:互联网

返回主页 Johnson木木
博客园 首页标签 新随笔 联系 订阅 管理
SpringBoot使用策略模式+工厂模式
为了防止大量的if…else…或switch case代码的出现,可以使用策略模式+工厂模式进行优化。
在我的项目当中,报表繁多,所以尝试了这种方式进行优化报表的架构。代码很简单,如下:

Factory工厂类#
Copy
@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;
}

}
接口#
Copy
public interface ReportService {
String getResult();
}
实现类#
Copy
@Component(value = “A1”)
public class ReportServiceA1 implements ReportService {

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

}
Copy
@Component(value = “A2”)
public class ReportServiceA2 implements ReportService {

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

}
测试#
Copy
@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);
}

}
打印如下:

Copy

我是A1

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

个人博客网址: https://colablog.cn/

如果我的文章帮助到您,可以关注我的微信公众号,第一时间分享文章给您
微信公众号

作者: Johnson木木
出处:https://www.cnblogs.com/Johnson-lin/p/14028372.html
本站使用「CC BY 4.0」创作共享协议,转载请在文章明显位置注明作者及出处。
0 0
« 上一篇: 使用阿里云OSS的服务端签名后直传功能
posted @ 2020-11-24 08:17 Johnson木木 阅读(48) 评论(0) 编辑 收藏
登录后才能发表评论,立即 登录 或 注册, 访问 网站首页
博客园派送云上免费午餐,AWS注册立享12个月免费套餐
Copyright © 2020 Johnson木木
Powered by .NET 5.0.0 on Kubernetes
Powered By Cnblogs | Theme Silence v2.0.0
CONTENTS

  1. Factory工厂类
  2. 接口
  3. 实现类
  4. 测试
  5. 总结

阅读目录

关注博主

标签:String,Johnson,49,getResult,ReportService,Copy,public
来源: https://blog.csdn.net/wubaoyu123/article/details/110038344