dao设计(四),预留实现(接口作为参数)

时间:2020-11-28 22:03:27

在查询缓存处理中,我们常常需要考虑一种情况,就是缓存不存在,然后需要去数据库中获取,如果每次都用if else来处理,那么代码看起来就会很冗余,现在我们来看下这种有意思的方式。

在dao框架设计中,缓存处理相关的我们可以设计成一个类,如ObjectCacheManager,如更新缓存,删除缓存,根据id获取等通用方法,在获取方法上,我们希望如果getById获取不到数据,能预留一个方法去DB中获取,这个方法自然丢给上层去实现,这里可以将ObjectCacheManager设计成abstract方法,但这样继承关系就会很多,不利于扩展,此时我们可以在getById传入一个参数,类型为接口,接口包含一个获取方法的接口,这样实现起来就很自然,获取不到就通过这个接口的方法去获取,接口参数的实现丢给调用方。