依赖倒置原则
一、什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则
依赖倒置原则, DIP(Dependence Inversion Principle)是程序要依赖于抽象接口,不要依赖于具体实现。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
好莱坞原则,“不要给我们打电话,我们会给你打电话(don‘t call us, we‘ll call you)”。
首先从句型结构上是一样的,“不要。。。,要。。。”,“不要依赖具体实现,要依赖抽象”,“不要给我们打电话,要等我们会给你打电话”。
但是,其实“依赖倒置原则”跟“好莱坞原则”是不相关的。“依赖倒置原则”中的接口和实现在某方面说是一类东西,是可以相互替换的,而“好莱坞原则”是主宾之间的替换,形容为“倒置原则”更贴切。“依赖倒置原则”的主要说的“依赖”的倒置替换。例如:有A、B、C三个类,A调用B、C,即A依赖B、C,而B、C有相似的功能,那么A不能直接调用B、C,而是应该抽象B、C的相似功能为D,然后A调用D也就是A依赖D。这个例子中是具体的实现B、C和抽象的D之间的“依赖倒置”。
二、描述一个你熟悉的框架,是如何实现依赖倒置原则的
Spring中的Controller、Service、Repostory等之间的依赖是严格按照依赖倒置原则实现的。每层之间都依赖的抽象接口。
三、接口隔离原则优化 Cache 类的设计,画出优化后的类图
interface CacheBuilder{
void build(Config conf);
}
interface CacheExecutor{
Object get(Object key);
void put(Object key,Object value);
void delete(Object key);
}
class Cache implement CacheBuilder,CacheExecutor{
Object get(Object key){}
void put(Object key,Object value){}
void delete(Object key){}
void build(Config conf){}
}
版权声明: 本文为 InfoQ 作者【Z冰红茶】的原创文章。
原文链接:【http://xie.infoq.cn/article/03fb2ac6d011fbd01bda73af7】。未经作者许可,禁止转载。
评论