什么是依赖倒置原则,为什么有时候依赖倒置原则又被称为好莱坞原则?
《敏捷软件开发》一书分为4部分:敏捷方法、设计原则、设计模式、UML。依赖倒置原则就
是「设计原则」之一。解释为:
高层模块不应该依赖低层模块,两者都应该依赖抽象
抽象不应该依赖细节,细节应该依赖抽象
高层模块是指调用者,低层模块是被调用者。比如:Button--on/off-->Lamp。Button就是高层模块,Lamp是低层模块。
开关灯是书中的一个例子。但是我觉得这个例子并不容易让人理解这个原则,因为在实践中
没有谁会去为一个开关灯制造一个抽象。这个原则只有当程序复杂到需要一个协议(或约定
或规则)的时候,它的意义才明显起来。比如html协议,浏览器解释并执行html文件是高层
模块,一个html文件是低层模块。一个http容器是高层模块,我们的服务代码是低层模块
。
依赖倒置的前提是程序分层,而该如何分层是要我们思考的点,见机行事的地方,也就是抽象
的过程。我想用一句话概括这个原则:程序的复杂性,原来是可以通过分层解决的。
(注意是低层不是底层,老是打错字。另外,感觉一个道理其实可以用很小的篇幅讲明白的
哈?)
评论