控制反转-Inversion Of Control
1、对象存哪去? 分析:由于我们是很多对象,肯定要找个集合来存。这时候有 Map 和 List 供选择。 到底选 Map 还是 List 就看我们有没有查找需求。有查找需求,选 Map。 所以我们的答案就是 在应用加载时,创建一个 Map,用于存放三层对象。 我们把这个 map 称之为容器。
2、还是没解释什么是工厂? 工厂就是负责给我们从容器中获取指定对象的类。这时候我们获取对象的方式发生了改变
原来: 我们在获取对象时,都是采用 new 的方式。是主动的。
现在: 我们获取对象时,同时跟工厂要,有工厂为我们查找或者创建对象。是被动的。
这种被动接收的方式获取对象的思想就是控制反转,它是 spring 框架的核心之一。
public class Client {
public static void main(String[] args) {
//new方式获取资源,程序间高耦合。
IAccountService as = new AccountServiceImpl();
//IOC方式通过工厂类获取资源,降低了程序间的耦合性。
IAccountService as = (IAccountService) BeanFactory.getBean("accountService");
as.saveAccount();
}
}
注:其他代码见之前的博客。