工厂 + 策略模式


工作中常用的工厂 + 策略模式,避免写过多冗余的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) {

    }
}

文章作者: Adbo
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Adbo !
评论
  目录