依赖倒置原则指的是:高层次的模块不依赖于低层次的模块的实现具体细节。
在Java中的表现就是:模块间的依赖通过抽象类,实现类不发生直接的依赖关系,其依赖是通过接口或抽象类产生的。
用一句活概括就是:面向接口编程或者说是面向抽象类编程。
以上几篇文章实现的缓存功能的代码来说,首先实现了一个内存缓存,创建了MemoryCache类,并在ImageLoader直接依赖使用。当MemoryCache不能满足需求的时候,我们又分别创建了DiskCache和DoubleCache类,为了实现不同的需求,我们又一次在ImageLoader中修改代码添加了DiskCache和DoubleCache功能。假如用户再有其他的缓存策略呢?难道要不断地创建各种对象,修ImageLoader中的代码吗?最终我们将代码抽象出来创建了ImageCache接口,所有自定义缓存策略都实现该接口,在ImageLoader只需要用ImageCache这个对象就可以了。仔细想想这是不是就是依赖倒置原则所形容的“实现类不发生直接的依赖关系,其依赖通过接口或者抽象产生的,既高层次的模块不依赖于低层次的模块实现的具体实现”
网友评论