据我了解YAGNI
说我们只需要在需要时提取界面。因此,如果我们现在不需要多态并且只有一个实现,我们就不需要使用接口。但DIP
说:
一个。高级模块不应该依赖于低级模块。都 应该取决于抽象。
B中。抽象不应该依赖于细节。细节应该取决于 抽象。
看起来YAGNI
与DIP
的选项B之间存在差异。
此外,如果我们想要应用OCP
,我们需要反转依赖控制并提取抽象,以便能够在不修改该类型的情况下扩展类型。
此外,某些技术需要提取抽象,以便能够对类型客户端进行单元测试。但是例如在java中我们不需要它。所以我想知道如果我现在只有一个实现,我是否需要提取抽象?