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/

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值