不要求所有代码都遵循设计原则,要考虑人力、时间、成本、质量,不刻意追求完美




意义

提高代码的可读性、可维护性、可复用性。



依赖倒置原则

依赖倒置原则(Dependence Inversion Principle,DIP)是指设计代码结构时,高层模块不应该依赖底层模块,二者都应该依赖其抽象。抽象不应该依赖细节;细节应该依赖抽象。通过依赖倒置,可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所造成的风险。

接下来看一个案例,还是以课程为例,先来创建一个类 Tom:

设计模式系列:软件架构设计的七大原则之依赖倒置原则_ico

xxxxxxxxxx
 
1
public static void main(String[] args) {
2
Tom tom = new Tom();
3
tom.studyJavaCourse();
4
tom.studyPythonCourse();
5
}

随着学习兴趣的暴涨,现在 Tom 还想学习AI 人工智能的课程。这个时候,业务扩展,我们的代码要从底层到高层(调用层)一次修改代码。在 Tom 类中增加studyAICourse()的方法,在高层也要追加调用。如此一来,系统发布以后,实际上是非常不稳定的,在修改代码的同时也会带来意想不到的风险。接下来我们优化代码,创建一个课程的抽象ICourse 接口:

设计模式系列:软件架构设计的七大原则之依赖倒置原则_python_02

然后写JavaCourse 类:

设计模式系列:软件架构设计的七大原则之依赖倒置原则_python_03

再实现PythonCourse 类:

设计模式系列:软件架构设计的七大原则之依赖倒置原则_java_04

修改 Tom 类:

 设计模式系列:软件架构设计的七大原则之依赖倒置原则_ico_05