依赖倒置原则
发布时间:2020-12-14 05:14:17 所属栏目:百科 来源:网络整理
导读:问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来 达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模 块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案: 将类A修改为依
问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。 解决方案:将类A修改为依赖接口I,类B和类C各自实现接口I,类A通过接口I间接与类B或者类C发生联系,则会大大降低修改类A的几率。 例子:PC里如果CPU、内存、硬盘都需要依赖具体的主板,主板一坏,所有的部件都没用了,者显然不合理,反过来,如果内存坏了,也不应该造成其他部件不能用才对。而如果不管高层模块还是低层模块,它们都依赖于抽象,具体一点就是接口或抽象类,只要接口是稳定的,那么任何一个的更改都不用担心其他受到影响。 定义:a.高层模块不应该依赖低层模块。两个都依赖抽象。 b.抽象不应该依赖细节,细节应该依赖抽象。
应用:在实际编程中,我们一般需要做到如下3点: 1、低层模块尽量都要有抽象类或接口,或者两者都有。 2、变量的声明类型尽量是抽象类或接口。 3、使用继承时遵循里氏替换原则。(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- ruby-on-rails – 在发布包含多个文件字段的表单时从nginx获
- c# – 从.All中逐位减法
- dojo小例子(20)动态加载的Select增加一个option空白项
- Visual Studio 2017正式版发布 Mac版新功能特性有哪些
- 在Swift中使用Google Calendar API
- ruby-on-rails – CodeRay样式表
- ruby-on-rails – 在Ruby on Rails 3中动态创建表和模型
- 什么是依赖注入
- EBS Form开发中弹性域定义的更新及其语法
- Swift Compiler Error Type 'int' does not con