依赖倒置原则(DIP)
依赖倒置原则定义
📌High level modules should not depend upon low level modules, Both should depend upon abstractions. Abstractions should not depend upon details. Details should depend upon abstractions
翻译过来:
高层模块不依赖低层模块,两者都应该依赖其抽象
抽象不应该依赖细节
细节应该依赖抽象
按照Java的理解,是面向接口编程
依赖倒置原则作用
降低类间的耦合性
类间的依赖都是通过接口完成的,某个类的实现变了,也不影响上游代码。
减少并行开发引起的风险
各层级,模块间都是通过接口定义的约束,只要都遵循这些约束,能相应减少了并行开发的冲突。
依赖倒置的实现方法
构造函数传递依赖对象
Setter方法传递依赖对象
接口声明依赖
好莱坞原则
don't call us, we'll call you
因为在好莱坞,把简历递交给演艺公司后就只有回家等待。由演艺公司对整个娱乐项的完全控制,演员只能被动式的接受公司的差使,在需要的环节中,完成自己的演出。
为什么有时候依赖倒置原则又被称为好莱坞原则
好莱坞有一个角色,找演员来演
好莱坞相当于高层,演员们相当于低层,他们间的联系是通过某个角色,
这个角色由哪个演员来演都可以,并不依赖于具体某个演员,
整个流程有点像面向接口编程。
📌两个原则强调的点应该是不一样的,查到的资料给我的感觉是:
好莱坞原则:强调的是高层对底层的主动调用
依赖倒置原则:强调的是面向接口编程
有点类似,但又不全是。
接口隔离原则优化 Cache 类
提示:
cache 实现类中有四个方法,
其中 put get delete 方法是需要暴露给应用程序的,
rebuild 方法是需要暴露给系统进行远程调用的。
如果将 rebuild 暴露给应用程序,应用程序可能会错误调用 rebuild 方法,导致 cache 服务失效。
按照接口隔离原则:不应该强迫客户程序依赖它们不需要的方法。也就是说,应该使 cache 类实现两个接口,一个接口包含 get put delete 暴露给应用程序,一个接口包含 rebuild 暴露给系统远程调用。从而实现接口隔离,使应用程序看不到 rebuild 方法。
版权声明: 本文为 InfoQ 作者【leo】的原创文章。
原文链接:【http://xie.infoq.cn/article/914b142376d957d5b00e5db2d】。
本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。
评论