大多数的人在学习ioc的时候都是一脸蒙圈,什么是控制反转?很多作者讲的时候没有循环渐进,本来很简单的一个编程思想,听了半天彻底懵了,话不多说,咱们看代码,从小白到彻底明白IOC控制反转。
第一步:这是创建一个用户A,这个大家都能看懂吧,方法getUser()是为了获取自己的数据。这一步挺简单吧,咱们再看下一步跟这个一样简单
第二步:这是创建一个用户B,方法getUser()也是为了获取自己的数据。(这个大家应该也能看懂,跟第一步一样简单。)
第三步: 好了到这一步咱们就把业务层的功能弄完了,什么是业务层,就是干活的层,就是具体去做事的层,咱们这做的事是"System.out.Println(获取用户数据)" 。就是一个控制台输出。这会可能有人会迷糊什么是控制台?哈哈,就是能输出结果的那个地方。好了,有人干活,咱们是不是需要一个控制层呢?什么是控制层?就是领导呗,给业务层发号施令的人,那 咱们写一个控制层的类:代码如下↓
这是让A干活:
这是让业务员B干活
上面的UserSerVice就是控制层,也就是领导,他自己比较懒,自己不屑写具体的逻辑,虽然只有一行"System.out.Println(获取用户数据)" 。
第四步:这是测试类,也就是用户你自己。现在你想看看他们的劳动成果。咱们代码这个行业里是不让用户和员工之间有联系的,那好吧这是规则,咱们都得遵守(这其实没有,我是为了让你更好的理解mvc,才这么讲的)getInfomation()方法里做了什么呢?其实就是领导拿员工的劳动来给用户你展示。领导只干了这个。
![](https://img-blog.csdnimg.cn/20210325181719848.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMzNTYwNDgx,size_16,color_FFFFFF,t_70)
好了,到这一步。如果你看懂了的话,咱们就要稍微改动改动了,大家看到两个员工(UserA,UserB)是不是都干了一样的事啊?都是用了一个getUser()方法。
那咱们是不是可以面向接口编程呢?通俗点说就是:抽象出来一个接口,把这个getUser(),放在接口里。然后两个员工实现这个接口。改造如下:
然后咱们的控制层就可以这么写了:
用户这么调用:
第四步:也是最后一步,就是让用户来选择实现控制反转。:咱们发现在控制层,如果有多个员工咱们需要new多个对象,那是不是让用户很被动,怎么才能我想让哪个员工就用哪个员工呢?很好办,那就是在控制层写一个get()方法,咱们把员工作为形式参数传进去就能实现,用户我想调用哪个员工就用哪个员工。代码如下:
实现控制反转:
以上就是IOC控制反转。结束了。
手敲操作!欢迎指正!Q:919506728