微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

设计模式6大原则之依赖倒置原则

依赖倒置原则

定义:

a. 高层模块不应该依赖于低层模块。二者都应该依赖于抽象。

b. 抽象不应该依赖于细节。细节应该依赖于抽象。

抽象:就是指接口或者抽象类。

细节:实现类,可以被new出来的类。

为什么要遵守依赖倒置原则?

正是高层模块包含了应用程序中重要的策略选择和业务模型。这些高层模块使得其所在的应用程序区别于其它。然而,如果这些高层模块依赖于低层模块,那么对低层模块的改动就会直接影响到高层模块,从而迫使它们依次作出改动。

本应该是高层的策略设置模块去影响低层的细节实现模块的。 包含高层业务规则的模块应该优先并独立于包含实现细节的模块。无论如何高层模块都不应该依赖于低层模块。

此外,我们更希望能够重用的是高层的策略设置模块。我们已经非常擅长于通过之程序库的形式来重用低层模块。如果高层模块独立于依赖低层模块,那么在不通的上下文中重用高层模块就会变得非常困难。然而,如果高层模块独立于低层模块,那么高层模块就可以非常容易地被重用。该原则是框架设计的核心原则。

规则:

依赖倒置原则的本质就是通过抽象(抽象类或者接口)使各个类或模块的实现彼此独立,不互相影响,实现模块见的松耦合,如果需要使用该规则,需要遵循以下几个规则:

1、每个类尽量都有接口或者抽象类,或者抽象类和接口两者都具备(这个是该原则的基本要求,接口和抽象类都是抽象,有了抽象才可能依赖倒置);

2、变量的表面类型尽量是接口或者抽象类;

3、任何类都不应该从具体类派生;

4、尽量不要覆写基类的方法(如果基类是一个抽象类,并且该方法已经实现了,子类尽量不要覆写。类间依赖的是抽象,覆写了抽象方法,对依赖的稳定性会产生一定的影响);

5、结合里氏替换法使用;

这个原则对于那些虽然具体但是却稳定的类来说似乎并不是很合适, 如果一个类不太会改变, 而且也不太可能创建其他的派生类,那么依赖它似乎并没有太大的危害。比如String类。

原文地址:https://www.jb51.cc/javaschema/286996.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐