最近做项目,有个需求是和外部对接,从接口获取新闻数据,把数据和缓存中的数据对比,多了的添加到数据库,少了的删掉。接口有两个,一开始我是在业务类里写了两个方法,代码太长,简单说就是两个部分:
public Object saveANews() {
//1、获取A接口新闻列表
//2、和缓存对比,存数据到数据库
}
public Object saveBNews() {
//1、获取B新闻列表
//2、和缓存对比,存数据到数据库
}
写完后我发现,因为操作的是数据库的同一张表,2的部分代码完全一模一样,只有1的部分不同,而1的部分其实就只有一行代码。。。
这必须得复用啊,而且是一个业务,也没必要分别用两个方法,于是我改成了这样:
//业务接口实现方法
public Object saveNews(NewsUtilService service) {
//1、获取接口新闻列表
List<NewsVO> list = service.queryNews();
//2、和缓存对比,存数据到数据库
}
//定义新闻数据接口
public interface NewsUtilService {
List<NewsVO> queryNews();
}
//接口的两个实现类
@Service
public class ANewsDataServiceImpl implements NewsUtilService {
@Autowired
private NewsDataMapper newsDataMapper;
@Override
public List<NewsVO> queryNews(){