控制反转-Inversion Of Control
类之间产生依赖关系,可以称之为 “耦合”。
1)使用配置文件配置
如通过反射的方式来注册驱动:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cGcq5yMxczY0YGZjhDO0kDNmF2NwMjM4UWZzIWNiBDMxIjNk9CX2AzLcdDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL5M3Lc9CX6MHc0RHaiojIsJye.jpg)
上面有个问题,就是我们发射类对象的全限定类名字字符串是在java类中写死的,一旦要改还是要修改源代码。解决这个问题很简单,就是使用 使用配置文件配置。
2)工厂模式解耦
在实际开发中,可以把所有的dao、service和action对象使用配置文件配置起来,当启动服务器应用加载的时候,通过读取配置文件,把这些对象创建出来并存起来。接下来使用的时候,直接取就可以了。
上面解耦的思路有2个问题:
1, 存那里去?->引出容器这个概念
分析: 有查找需求,放到Map集合(不放到List集合)
结论 : 在应用加载时,创建一个Map,用于存放action,service和dao对象,把这个map称之为 容器。
2)何为工厂?->引出控制反转这个概念
一般我们new对象都是主动的,现在我们把对象交给工厂帮我们创建,这是被动的,通过被动接收的方式获取对象的思想就是控制反转,它的作用只有一个,就是削减计算机程序的耦合。