java工厂策略模式的开发应用
- 前言
- 准备工作
- 具体实现
- 测试
- 仰天大笑出门去,我辈岂是蓬蒿人
前言
大概内容:
假设我有五个车间,每一个车间生产不同的车子,想要统一管理,不关心哪个车间生产什么车;只需找一个代理,你想要什么车就找它,以后新增车型,也不用考虑它是哪个车间制造的,只需要找代理,让它帮你去对应车间取车
准备工作
- 1.首先需要创建一个策略接口
这一步可以看做是车间要遵守的规范
- 2.然后再创建对应的策略实现类
这一步可以看做是对应的车间
- 3.最后创建一个工厂代理对象
把所有的车间交给它管理,用户需要什么只需要找代理对象
具体实现
这就是一个具体的工厂策略目录
1策略接口,2工厂代理对象,3策略实现接口
首先创建一个策略接口
public interface ParseDataStrategy {
String getStr(String tableName);
}
然后创建具体的实现类,这里创建两个
@Service
public class ParseData1Service implements ParseDataStrategy {
private static final Logger log = LoggerFactory.getLogger(ParseData1Service.class);
@Override
public String getStr(String tableName) {
return tableName;
}
}
@Service
public class ParseData2Service implements ParseDataStrategy {
private static final Logger log = LoggerFactory.getLogger(ParseData1Service.class);
@Override
public String getStr(String tableName) {
return tableName;
}
}
工厂代理对象
@Component
public class ParseDataFactory {
private static final Logger log = LoggerFactory.getLogger(ParseDataFactory.class);
@Autowired
private ParseData1Service parseData1Service;
@Autowired
private ParseData2Service parseData2Service;
public ParseDataStrategy getStrategy(String dictType) {
ParseDataStrategy strategy = null;
switch (dictType) {
case "1":
strategy = parseData1Service;
break;
case "2":
strategy = parseData2Service;
break;
default:
log.error("未配置对应模板,请联系管理员");
break;
}
return strategy;
}
}
测试
String str="1"
ParseDataStrategy parseDataStrategy = parseDataFactory.getStrategy(str);
if (null == parseDataStrategy) {
log.error("测项{}未配置对应模板!", str);
return null;
}
String str1 = parseDataStrategy.getStr(str);