rooobot / architecture-training

Architecture training camp homework
0 stars 2 forks source link

架构师训练营-第二周作业三:优化Cache类的设计 #5

Open rooobot opened 4 years ago

rooobot commented 4 years ago

原类设计图:

image

优化后的类设计图:

cache builder

分析:

Cache类中把reBuild方法暴露给了应用程序调用方,所以可能导致因为应用程序错误的调用而导致Cache不可用,因此需要对应用程序屏蔽reBuild方法。

对于应用程序而言,不需要关注Cache到底是哪种类型,是本地还是远程的,应用程序关注的只有getputdelete三个方法,其它的都不关心。所以,应用程序只需要依赖重构后的Cache接口即可。

既然reBuild是给系统做远程调用的,那reBuild通过接收Config信息可以生成具有Cache功能的具体的对象,所以reBuild方法的实现是一个策略模式,它会根据不同的Config生成具备相同Cache功能的不同Cache对象,同时,在运行时期间,可以将生成的不同的Cache对象缓存在本地,方便用户在不同的业务场景下,通过不同的Config配置来切换不同的Cache实现。

reBuild方法是由系统调用的,所以系统依赖CacheBuilder接口,根据Config参数的不同信息,选择不同人CacheBuilder实现,并缓存在本地,方便用户在运行时动态切换。


以下为06-19更新:

上面虽然拆成了两个接口,但明显builder接口的职责又被继承回来了,之前是想着系统也可能会使用缓存操作的方法,所以就直接继承,虽然对于最终的实现效果一样,但即忽略了继承带来的职责上的污染,就是CacheBuilder接口的职责被污染了。

现在回想真是不知道当时是怎么想的了,这么明显的不合理。。。

image

回头看确实有点无语