依赖倒转原则就是高层模块不能依赖底层模块,他们两个应该依赖抽象,而抽象就是接口或者抽象类,是管理他们两个的父类,由于这种关系,所以抽象不能依赖细节,而细节要依赖抽象。
我们直接用案例来分析就明白了:
// 定义一个语言接口
public interface ILanguage {
// 定义一个输出语言的方法
public String getLanguage();
}
// Java语言类
public class Java implements ILanguage {
public String getLanguage() {
return "正在学习Java语言开发...";
}
}
// C语言类
public class C implements ILanguage {
public String getLanguage() {
return "正在学习C语言开发...";
}
}
// 定义一个学生,学习编程语言
public class Student {
private ILanguage iLanguage = null;
public Student(ILanguage iLanguage) {
this.iLanguage = iLanguage;
}
public void studyMethod() {
System.out.println("小明同学在学习:");
if (null != iLanguage) {
System.out.println(iLanguage.getLanguage());
}
}
}
// 客户端操作
public class Main {
public static void main(String[] args) {
Student student = null;
student = new Student(new C());
student.studyMethod();
student = new Student(new Java());
student.studyMethod();
}
}
常规的写法是,Student直接和编程语言交互,这样的话就耦合性比较高,从而也是高层模块依赖底层模块,这个时候需要用一个抽象,让细节依赖抽象,而这个 ILanguage 接口 就是抽象,从而让高层模块与底层模块没有依赖。
总之一句话解释就是:你理解了面向接口编程,你就理解了依赖倒置原则。
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006