一.IOC理论
1.什么是IOC:Invesion of Controller 控制反转,依赖注入,这两个是相辅相成,从不同角度去解释IOC这个概念
a.控制什么?
控制对象的创建及销毁(生命周期)
b.反转什么?
将对象的控制权交给Ioc容器
这边解释下为什么要使用ioc?
在传统模式下,被依赖的对象,要等依赖对象需要的时候再去创建,如图所示:
张三->回家,他首先需要一辆车,然后再左转右转回家
但是这样实现有什么问题?
a.张三需要的是一辆车,可能是奥迪,也可能是宝马
b.车子不应该是由张三来创建,可以用构造方法来创建,当然也可以使用我们的Ioc容器
c.高耦合性,张三更还车辆的代价是巨大的
二.代码实现属于自己的MyIoc
源码我这边放在gitee上,大家可以自行去看:
https://gitee.com/mk_dy/study-java/tree/develop/MyIoc
1.实例化bean
2.保存bean
3.提供bean
-
下面是我要实现的类图
-
创建容器的核心代码
public class IocContainer {
// 为什么是使用ConcurrentHashMap,用来存bean
private Map<String, Object> beans = new