代码设计原则(二)--依赖倒置原则
依赖倒置原则(Dependence Inversion Principle,DIP)
-
高层模块不应该依赖底层模块,二者都应该依赖其抽象;
-
抽象不应该依赖细节;细节应该依赖抽象;
-
可以减少类与类之间的耦合性,提高系统的稳定性,提高代码的可读性和可维护性,并能够降低修改程序所
造成的风险。
代码说明
-
每次新增课程,在Levi类中新增:
public class Levi { public void studyJavaClss(){ System.out.println("Levi在学习java课程!"); } public void studyPythonClss(){ System.out.println("Levi在学习Python课程!"); } }
-
创建ICourse抽象类,Levi进行实现,并传入参数
public interface ICourse { void study(); }
public class Levi2 { public void study(ICourse iCourse){ iCourse.study(); } }
-
main 方法执行
Levi2 levi2 = new Levi2(); levi2.study(new JavaClass()); levi2.study(new PyhonClass());
-
-
通过构造器进行课程的传递
public class Levi3 { private ICourse iCourse; public Levi3(ICourse iCourse) { this.iCourse = iCourse; } public void study(){ iCourse.study(); } }
-
main
Levi3 levi3 = new Levi3(new JavaClass()); levi3.study();
-
-
通过set方法传递
public class Levi4 { private ICourse iCourse; public ICourse getiCourse() { return iCourse; } public void setiCourse(ICourse iCourse) { this.iCourse = iCourse; } public void study(){ iCourse.study(); } }
-
总体Run
public class Run { public static void main(String[] args) { //========v1======= //想要学习什么课程,在Levi类中加新的课程,维护比较麻烦 Levi levi = new Levi(); levi.studyJavaClss(); levi.studyPythonClss(); //========v2======= //想要学习什么课程,通过new传对象进行学习,不用依赖Levi新加的方法 Levi2 levi2 = new Levi2(); levi2.study(new JavaClass()); levi2.study(new PyhonClass()); //========v3======= //想要学习什么课程,通过构造器传递参数进行初始化 Levi3 levi3 = new Levi3(new JavaClass()); levi3.study(); //========v4======= //通过set初始化 Levi4 levi4 = new Levi4(); levi4.setiCourse(new JavaClass()); levi4.study(); } }
若有侵权请联系作者,所有内容仅代表个人认知观点,如有错误,欢迎校正;
邮箱:644304139@qq.com
博客地址:https://www.cnblogs.com/liweiweicode/