工作中常用的工厂 + 策略模式,避免写过多冗余的if
@Autowired
private BatchFactory batchFactory;
// 工厂 + 策略模式
SiteBatch siteBatch = batchFactory.get(site);
List<BO> BOS = siteBatch.analyzeFile(is);@Component
public class BatchFactory {
@Lazy
@Autowired
private Map<String, SiteBatch> siteMap;
public SiteBatch get(String type) {
return siteMap.get(type);
}
}@Service
public interface SiteBatch {
/**
* 工厂模式时用
* @return
*/
String getType();
List<ShopBatchBO> analyzeFile(InputStream is);
void checkParam(BatchBO batchBO);
}@Service(SiteBatchType.CDISCOUNT)
public class CdiscountBatch implements SiteBatch {
@Override
public String getType() {
return SiteBatchType.CDISCOUNT;
}
@Override
public List<BatchBO> analyzeFile(InputStream is) {
List<BatchBO> list = Lists.newArrayList();
return list;
}
@Override
public void checkParam(BatchBO batchBO) {
}
}