依赖倒置原则

依赖倒置原则

定义

高层模块不要依赖低层模块,应该通过抽象来互相依赖。除此之外,抽象不要依赖具体实现细节,具体实现细节依赖抽象。

个人理解

避免对具体实现类的直接引用,使其付出更小的代价达到扩展的目的,与开闭原则照应。

缺点也是老生常谈的类文件数量增加,可维护性下降。所以要在适当场景使用,切勿过度设计。例如service层定义接口,实际项目中,大部分service只有单一实现,没有定义接口的必要。

示例一

控制反转是一种思想,用来指导框架层面的设计。“控制”指的是对程序执行流程的控制,“反转”指的是由程序员控制转为框架控制。

依赖注入是控制反转具体的一种实现,通过构造函数、set方法将依赖对象注入。依赖注入框架不只有Spring,还有很多,例如Google Guice

示例二

Tomcat和web应用,Tomcat是高层模块,web应用是底层模块。两者没有直接依赖,而是依赖于Servlet规范。

Servlet规范不依赖于Tomcat容器和web应用程序的具体实现。

“基于接口而非实现编程”跟“依赖注入”的联系和区别

联系

两者都是从外部传入对象。

区别

前者强调的是接口,遵守协议,不依赖于具体实现。后者强调的是对象的创建在外部,而不是内部new出来的。

作者:Yuyy
博客:https://yuyy.info
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇