0
点赞
收藏
分享

微信扫一扫

1.5 依赖倒置原则


1.定义
高层模块不应该依赖低层模块,二者都应该依赖其抽象。
通俗易懂的说,就是应该依赖接口,而不是实现,也就是我们常说的面向接口编程。这样类和类之间就不会直接依赖,从而能够实现开闭原则。类依赖接口,当需要扩展的时候我们可以替换实现。
依赖倒置原则可以减少类之间的耦合性、提高代码可读性。

2.代码示例
某个人学习课程。

class Steven {
public void studyJava() {
System.out.println("Steven学习Java课程");
}

public void studyPython() {
System.out.println("Steven学习Python课程");
}
}

public class Test {
public static void main(String[] args) {
Steven steven = new Steven();
steven.studyJava();
steven.studyPython();
}
}

Steven学习Java课程
Steven学习Python课程

上层应用对底层实现类依赖太大,上层需要扩展新功能,必需要在底层实现类修改代码。

3.改进

public interface ICourse {
void studyCourse();
}

public class JavaCourse implements ICourse{
@Override
public void studyCourse() {
System.out.println("Steven学习Java课程");
}
}

public class PythonCourse implements ICourse {
@Override
public void studyCourse() {
System.out.println("Steven学习Python课程");
}
}

class Steven {
public void study(ICourse iCourse) {
iCourse.studyCourse();
}
}

public class Test {
public static void main(String[] args) {
Steven steven = new Steven();
steven.study(new JavaCourse());
steven.study(new PythonCourse());
}
}

1.5 依赖倒置原则_spring

4.构造器注入

class Steven {
private ICourse iCourse;

Steven(ICourse iCourse) {
this.iCourse = iCourse;
}

public void study() {
this.iCourse.studyCourse();
}
}

public class Test {
public static void main(String[] args) {
// Steven steven = new Steven(new JavaCourse());
// steven.study();
Steven steven = new Steven(new PythonCourse());
steven.study();
}
}

Steven学习Python课程

Spring的Bean是单例的。

5.属性注入

class Steven {
private ICourse iCourse;

public void setICourse(ICourse iCourse) {
this.iCourse = iCourse;
}

public void study() {
this.iCourse.studyCourse();
}
}

public class Test {
public static void main(String[] args) {
Steven steven = new Steven();
steven.setICourse(new JavaCourse());
steven.study();

steven.setICourse(new PythonCourse());
steven.study();
}
}

Steven学习Java课程
Steven学习Python课程


举报

相关推荐

0 条评论