关于依赖倒置原则的一点看法
Bob大叔教导我们说: 1)高层不依赖于底层,而是高层与底层共同依赖于抽象; 2)抽象不依赖于细节,而是细节依赖于抽象; 非常经典的方法论。但他老人家的一个观点是我不能苟同的,他认为结构化编程一般是高层依赖于底层,甚至于“依赖倒置”这个名字都是这么起的。
然而,设计得好的结构化编程,并不真的是“高层依赖底层”。举例来说,敝公司某通讯设备底层可以是三四种不同设备,但高层并不需要关注真实的设备,因为中间的设备抽象层已经可以对付所有具体的设备,而对上层使用一致而抽象的接口:OPEN 打开 CLOSE 关闭 READ读 WRITE写,一样有抽象而且一样很优雅。在操作系统里这种抽象层应用更是广泛的,比如文件系统抽象也是如此,似乎与结构化并无直接关系。用OO一样可以设计出“高层与底层相互依赖”的麻花来。
Bob大叔教导我们说: 1)高层不依赖于底层,而是高层与底层共同依赖于抽象; 2)抽象不依赖于细节,而是细节依赖于抽象; 非常经典的方法论。但他老人家的一个观点是我不能苟同的,他认为结构化编程一般是高层依赖于底层,甚至于“依赖倒置”这个名字都是这么起的。
然而,设计得好的结构化编程,并不真的是“高层依赖底层”。举例来说,敝公司某通讯设备底层可以是三四种不同设备,但高层并不需要关注真实的设备,因为中间的设备抽象层已经可以对付所有具体的设备,而对上层使用一致而抽象的接口:OPEN 打开 CLOSE 关闭 READ读 WRITE写,一样有抽象而且一样很优雅。在操作系统里这种抽象层应用更是广泛的,比如文件系统抽象也是如此,似乎与结构化并无直接关系。用OO一样可以设计出“高层与底层相互依赖”的麻花来。