Open rooobot opened 4 years ago
原类设计图:
优化后的类设计图:
分析:
原Cache类中把reBuild方法暴露给了应用程序调用方,所以可能导致因为应用程序错误的调用而导致Cache不可用,因此需要对应用程序屏蔽reBuild方法。
Cache
reBuild
对于应用程序而言,不需要关注Cache到底是哪种类型,是本地还是远程的,应用程序关注的只有get、put和delete三个方法,其它的都不关心。所以,应用程序只需要依赖重构后的Cache接口即可。
get
put
delete
既然reBuild是给系统做远程调用的,那reBuild通过接收Config信息可以生成具有Cache功能的具体的对象,所以reBuild方法的实现是一个策略模式,它会根据不同的Config生成具备相同Cache功能的不同Cache对象,同时,在运行时期间,可以将生成的不同的Cache对象缓存在本地,方便用户在不同的业务场景下,通过不同的Config配置来切换不同的Cache实现。
Config
reBuild方法是由系统调用的,所以系统依赖CacheBuilder接口,根据Config参数的不同信息,选择不同人CacheBuilder实现,并缓存在本地,方便用户在运行时动态切换。
CacheBuilder
以下为06-19更新:
上面虽然拆成了两个接口,但明显builder接口的职责又被继承回来了,之前是想着系统也可能会使用缓存操作的方法,所以就直接继承,虽然对于最终的实现效果一样,但即忽略了继承带来的职责上的污染,就是CacheBuilder接口的职责被污染了。
builder
现在回想真是不知道当时是怎么想的了,这么明显的不合理。。。
回头看确实有点无语
原类设计图:
优化后的类设计图:
分析:
原
Cache
类中把reBuild
方法暴露给了应用程序调用方,所以可能导致因为应用程序错误的调用而导致Cache
不可用,因此需要对应用程序屏蔽reBuild
方法。对于应用程序而言,不需要关注
Cache
到底是哪种类型,是本地还是远程的,应用程序关注的只有get
、put
和delete
三个方法,其它的都不关心。所以,应用程序只需要依赖重构后的Cache
接口即可。既然
reBuild
是给系统做远程调用的,那reBuild
通过接收Config
信息可以生成具有Cache
功能的具体的对象,所以reBuild
方法的实现是一个策略模式,它会根据不同的Config
生成具备相同Cache
功能的不同Cache
对象,同时,在运行时期间,可以将生成的不同的Cache
对象缓存在本地,方便用户在不同的业务场景下,通过不同的Config
配置来切换不同的Cache
实现。reBuild
方法是由系统调用的,所以系统依赖CacheBuilder
接口,根据Config
参数的不同信息,选择不同人CacheBuilder
实现,并缓存在本地,方便用户在运行时动态切换。以下为06-19更新:
上面虽然拆成了两个接口,但明显
builder
接口的职责又被继承回来了,之前是想着系统也可能会使用缓存操作的方法,所以就直接继承,虽然对于最终的实现效果一样,但即忽略了继承带来的职责上的污染,就是CacheBuilder
接口的职责被污染了。现在回想真是不知道当时是怎么想的了,这么明显的不合理。。。
回头看确实有点无语