今天撸代码的时候,遇到一个根据type不一样,作很多处理的事情功能,我的第一想法就是if/else,或者switch/case来解决,项目经理看了我的代码,很不屑的问了一句:“你还在用switch/case?”。
看着我迷离的眼神,项目经理提笔写下了如下代码。
今天要说的是用接口的方式来取代switch/case,扩展性高,可读性高,关键是逼格高,我的观念就是:做人可以没有逼格,写的代码一定是要有逼格的。
先简单描述一下功能,一个类有n个type,前端传一个type过来,我们根据type来做不同的处理。
主要思路:初始化一个类ContextHolder,根据type,去select不同的实现类,然后做主要的逻辑处理,下面直接上代码(下面的代码忽略命名,忽略包名路径)。
1.我们现在SpringBoot的启动类里的run方法里加载ContextHolder
Class.forName("xxx.xxx.MazeContextHolder");
2.ContextHolder的具体实现
这个类里面主要就是加载具体的实现类,然后实现筛选的父类
public class MazeContextHolder {
private static final Map<MazeGridTypeEnum, BaseMazeGridTypeInitializer> holder = new HashMap<>();
private static final List<BaseMazeGridTypeInitializer> baseActivityInitializers = new ArrayList<>();
//静态代码块里面加载的都是type的实现类,放入内存
static {
Stri