我一直不太明白这句话的第二部分......
'高级模块不应该依赖于低级模块。两者都应该依赖于抽象(例如,接口) '
如果我改变...
class Upper {
foo = () => {
console.log('bar')
}
}
至...
class Upper {
foo = () => {
let lower = new Lower()
lower.bar()
}
}
class Lower {
bar = () => {
console.log('bar')
}
}
我们会说我已经成功地反转了依赖关系,因为现在控制台代码无法破坏高级模块(它在包装器中)。
这种情况下的抽象是接口'Lower',但控制台代码不依赖于'Lower',对吗?这取决于什么。这只是“代码”。
我想我真正的问题是在这种情况下究竟是什么表示“依赖”?