我一直在阅读可靠的 OOP 原则(依赖倒置原则),但并不太了解它是如何工作的。
当一个类明确知道另一个类的设计和实现时,对一个类的更改会增加破坏另一个类的风险。
假设我有一个取决于课程的学生,如果我会改变课程对学生的影响。使用 DI 是一样的吗?我的意思是 DI 替换新运算符,那又如何呢?学生仍然取决于课程
,请您举一些例子。
谢谢
public class Student {
.....
private Course course = new Course();
}
更新 1
(场景)如果我假设该类只有默认构造函数并且它永远不会使用任何实例变量来实例化new Course(name, .......)
更新 2
例子
public class Copy {
@Autowired
private Writer writer;
.....
}
public interface Writer{
void write();
}
public class PrinterWriter implements Writer {
.....
}
public class DiskWriter implements Writer {
....
}
现在发生的事情是我们的复制模块需要了解打印机和磁盘,您可以想象在这些情况下那些神奇的 if-else 语句来拯救我们。随着新需求的出现,您可能会向此复制模块添加越来越多的依赖项。归根结底,您最终会得到一个非常复杂、难以维护和难以理解的设计。
你能在这个例子中展示具体的依赖倒置消除了使用神奇的 if-else 语句的简单例子吗?