依赖倒置原则
什么依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
当A模块调用B模块的时候,A不是直接引用B的代码直接调用,而是A模块定义好需要调用的接口,B来实现这个接口,来实现高层模块不依赖低层模块实现解耦。
为什么称为好莱坞原则,该原则是和好莱坞模式类似,don't call me ,i will call you。
描述一个框架,是如何实现依赖倒置的?
java里的JDBC就是个典型的例子,java中的JDBC模块中定义好数据库连接和数据库操作的接口,我们使用JDBC时,只需要调用JDBC的数据库操作接口即可,接口具体的实现又各个数据库的驱动包来实现,这样切换数据库时只需要切换数据库驱动包既可。
ache实现类中有四个方法,其中put get delete方法是需要暴露给应用程序的,rebuild方法是需要暴露给系统进行远程调用的。如果将rebuild暴露给应用程序,应用程序可能会错误调用rebuild方法,导致cache服务失效。按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使cache类实现两个接口,一个接口包含get put delete暴露给应用程序,一个接口包含rebuild暴露给系统远程调用。从而实现接口隔离,使应用程序看不到rebuild方法。
用接口隔离原则优化Cache类的设计
把reBuild单独做一个接口,cache实现类中调用该CacheBuilder来实现隔离
评论