码迷,mamicode.com
首页 > 其他好文 > 详细

依赖倒置原则

时间:2020-03-21 14:35:49      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:出现   evel   src   eve   抽象   code   pen   modules   dep   

一、依赖倒置原则定义

1、上层模块不应该依赖底层模块,它们都应该依赖于抽象。(High level modules should not depend upon low level modules. Both should depend upon abstractions.)
2、抽象不应该依赖于细节,细节应该依赖于抽象。(Abstractions should not depend upon details. Details should depend upon abstractions.)

二、依赖倒置原则例子

比如现在需要实现一个比萨店,你第一件想到的事情是什么?我想到的是一个比萨店,里面有很多具体的比萨,如:芝士比萨、素食比萨、海鲜比萨……
比萨店是上层模块,比萨是下层模块,如果把比萨店和它依赖的对象画成一张图,看起来是这样:
技术图片

 

 

先从顶端开始,然后往下到具体类,但是,正如你看到的你不想让比萨店理会这些具体类,要不然比萨店将全都依赖这些具体类。现在“倒置”你的想法……别从上层模块比萨店开始思考,而是从下层模块比萨开始,然后想想看能抽象化些什么。你可能会想到,芝士比萨、素食比萨、海鲜比萨都是比萨,所以它们应该共享一个Pizza接口。对了,你想要抽象化一个Pizza。好,现在回头重新思考如何设计比萨店。
技术图片

 

 


图一的依赖箭头都是从上往下的,图二的箭头出现了从下往上,依赖关系确实“倒置”了

另外,此例子也很好的解释了“上层模块不应该依赖底层模块,它们都应该依赖于抽象。”,在最开始的设计中,高层模块PizzaStroe直接依赖低层模块(各种具体的Pizaa),调整设计后,高层模块和低层模块都依赖于抽象(Pizza)。

依赖倒置原则

标签:出现   evel   src   eve   抽象   code   pen   modules   dep   

原文地址:https://www.cnblogs.com/zw-2371blog/p/12538925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!