2021年6月24日星期四

对控制反转和依赖注入的突然顿悟

控制反转和依赖注入的概念在网络上有大量的解释,很多都非常的详细,但对我来说过多的解释,容易把我绕来绕去,昨天听大佬的课,突然清晰地顿悟了。希望通过简单的描述,记录我的理解。

控制反转(IOC):

下面通过两张简单的图,了解一下控制反转的思想,我们假设自己现在想吃回锅肉!

首先,我们可以自己炒一道符合自己口味的回锅肉,可以多加肉!然后我们就把它吃掉!!这种情况下回锅肉炒成什么样由我们自己控制

ok!第二天我们又想吃回锅肉了,但是有点懒,我们选择点外卖。

这回我们叫的外卖,那么商家将回锅肉炒成什么样并不是我们能决定的,也就是回锅肉炒成什么样不是我们能够控制的,我们就是拿到外卖吃。

很明显回锅肉的控制权从自己变成了别人,这种就叫做控制反转。

在面向对象编程中,每当我们要new一个新的对象的时候,也就是我们所说的实例化对象,一般情况下都是主动new一个新的对象。在IOC思想中,我们通常把实例化的任务交给别人,也就是自己主动的实例化变为被动的实例化,自己对实例的控制权被别人替代了,即控制权反转了。我们一般将实例化的任务交给IOC容器统一管理生命周期。

依赖注入(DI):

依赖注入是实现控制反转思想的一种方式,其想法就是在对象或属性被初始化的时候,将它所需要的依赖从外部注入进来,并不需要自己内部实例化依赖。

我们通过一段代码来看看为什么注入的依赖符合控制反转的思想。

type Player struct {	name string}type GameRoom struct {	player *Player}//这里我们就将GameRoom依赖的Player从外部注入进来//Player的实例化也交给了外部,所以对于Player的控制权反转了。func NewGameRoom(player *Player) *GameRoom {	return &GameRoom{player: player}}

很多情况下我们会原文转载:http://www.shaoqun.com/a/826723.html

跨境电商:https://www.ikjzd.com/

askme:https://www.ikjzd.com/w/2459

gtc:https://www.ikjzd.com/w/974

巴克莱:https://www.ikjzd.com/w/2775


控制反转和依赖注入的概念在网络上有大量的解释,很多都非常的详细,但对我来说过多的解释,容易把我绕来绕去,昨天听大佬的课,突然清晰地顿悟了。希望通过简单的描述,记录我的理解。控制反转(IOC):下面通过两张简单的图,了解一下控制反转的思想,我们假设自己现在想吃回锅肉!首先,我们可以自己炒一道符合自己口味的回锅肉,可以多加肉!然后我们就把它吃掉!!这种情况下回锅肉炒成什么样由我们自己控制。ok!第二天
亚马逊绩效考核表大全:https://www.ikjzd.com/tl/2738
快速处理无效listing(含操作表格):https://www.ikjzd.com/tl/2746
女汉子活成男人样是种遗憾 要适当优雅:http://lady.shaoqun.com/a/44743.html
我和合租女人的疯狂偷情故事(5/5):http://www.30bags.com/m/a/249590.html
19份亚马逊运营人员日常必备表格(包含成本核算,每日工作安排,绩效,产品推广计划表,FBA库存等19个表格):https://www.ikjzd.com/tl/2756
在"中国第一高楼"俯瞰,是种怎样的体验?_上海:http://www.30bags.com/a/220508.html
口述实录:猥琐男上司想包养我 我改如何拒绝他:http://lady.shaoqun.com/a/251362.html
男朋友喜欢玩3p我同意了 自述我被3p的全过程:http://lady.shaoqun.com/a/247890.html
女生喊痛男生还继续塞 女人越喊痛男人越用力冲刺:http://www.30bags.com/m/a/249757.html
亚马逊新品,无从下手?不如从这几点来做:https://www.ikjzd.com/articles/146007
这是一个甜蜜而尴尬的睡前故事,是哄女朋友睡觉所必需的:http://lady.shaoqun.com/a/386321.html
你会和你朋友的妻子做爱吗?让我们听听这三个人的心声:http://lady.shaoqun.com/a/386322.html

没有评论:

发表评论