1.2.4 依赖倒置原则(Dependency Inversion Principle、DIP)的错误

摘要:依赖倒置原则(Dependency Inversion Principle、DIP)是一个错误的尝试,Robert C. Martin希望将针对接口编程和控制反转两个概念纳入其DIP中,却形成了一个思路混乱的、不知所云的原则。(作为正文,不能够喜怒笑骂。草稿 抛弃依赖倒置原则 将被修改为吐槽版。)

1.2.4 抛弃依赖倒置原则(DIP)

Robert C. Martin(Bob大叔)被誉为世界级软件开发大师,是设计模式和敏捷开发先驱,敏捷联盟首任主席。著有《代码整洁之道》、《敏捷软件开发:原则、模式和实践》和《UML:Java程序员指南》等著作。他于1996在一个专栏上发表了的文章中提出依赖倒置原则(Dependency Inversion Principle、DIP) 并在几年后收入到他的著作《敏捷软件开发》中。

1. 基本态度

本节之所以明确提出抛弃DIP,源于下列原因:①DIP本身就是错误的。该论文有资格成为计算机科学史上著名的反例,国内外存在大量的基于DIP的文章、许多介绍DIP的书籍,国内几乎所有都关于设计模式的书籍都正面地介绍它。如此不知所云的原则为什么会在计算机界存在这么久?②它对学习者带来了困扰,依赖倒置原则(Dependency Inversion Principle、DIP)、控制反转/IoC 和依赖注入/DI 搅合在一起,成为“那些年搞不懂的高深术语”。③对于读者而言,他的错误有借鉴意义。通过指出DIP文章的错误,读者可以对针对接口编程、控制反转和Parnas原则有更清晰的认识;对于学者而言,他的错误有警示意义。有些学者追求制造一些高大上的东西,喜欢制造一些吸引眼球的新概念,以晦涩为荣。OOD不应讲哲学、神学和玄学;学习和研究OO时,应该知道的是日常生活的常识。④指出DIP文章的错误,与其说鼓励读者拥有批判精神,不如说希望程序员拥有工匠精神,踏踏实实领会编程中原则和技术,而非胡言乱语地制造概念。

很多人将DIP作为针对接口编程/抽象依赖原则的晦涩版本。在DIP大量存在于业界的情况下,这是一种妥协的方式:在不认可DIP的每一个字的前提下,可以将它解释为依赖于抽象类型

2. DIP论文的错误

本节不可能按照其论文,逐字逐句地指出其错误,请有兴趣的读者自己找到其原始文章(网上没有原文的链接,只有转载的文章),该文奇葩到了错误无处不在的地步。本质上,Robert C. Martin希望将针对接口编程和控制反转两个概念纳入其DIP这一个原则中,最后形成了一个思路混乱的、不知所云的原则。

  • 依赖倒置原则(DIP)
  • 1. High level modules should not depend upon low level modules, both should depend upon abstractions. 高层模块不应该依赖低层模块。两个都应该依赖抽象。
  • <
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值