一、什么是工厂模式

**###### 顾名思义,工厂模式可以看作是一个生产对象的工厂,其中对象的生产方法由具体的实现类定义(对象中包含什么不能由指定创建的类选择,使用工厂创建对象的类只能选择工厂中有的对象类型),就假如我们去汽车厂买车,我们可以根据厂里的汽车样式选择一款,但我们没办法指定要一款完全符合自己想法的车(需要如此定制的方法也不需要使用到工厂模式,不如自己创建一个类),工厂中只会按照既定的模型去创造对象我们可以指定的是这些模型中某些参数的值比如汽车的排量,油耗,但无法指定模型中没有的东西比如要在汽车上加个火箭推进器就不行,因为工厂中暂时还没有这样的模型(不过我们可以在工厂里添加一个这样的模型)。

总而言之,工厂模式就是将我们需要的对象以固定模型的方式存放在工厂中,在我们需要这种模型的对象时,我们只需要往其中传入一些具体的参数就能得到相应的对象,**

二、什么是控制反转

**###### 作为一个初学者在翻阅维基百科对控制反转的定义之后得出的结论:

角色上的反转,正常情况下的对象都是由开发者去new出来的,控制反转就是将创建对象的权力交给某部分程序(虽然这部分程序也是开发者写的,但我们不讨论。。。),我们将创建对象的细节交给代码去管理,我们在使用的时候就不必去关心具体的创建细节了,一直到这里,其实和我们自己手动创建对象并没有什么不同,创建对象的流程本质上没有变化,只是我们写了一段代码,让这段代码帮我们去做了这件事,也就是所谓“角色反转”
那么控制反转的作用如何体现呢?
控制反转最常见的方式就是依赖注入,通过外部容器来管理对象,在对象被创建时从外部进行注入,其被注入对象的方式是被动的,是由外部容器主动为其注入的
还有一种方式是依赖查找,会主动去找寻相应对象类型、名称的对象实例将其注入
知乎上一篇文章说的很通俗
总的来说,控制反转的思想可以大幅度的降低程序之间的耦合度,ioc作为连接程序与程序之前的桥梁,把对象的创建、管理综合起来处理,在需要某段代码需要对象时就去提取相应的对象。这个提取的过程就是依赖注入或者依赖检查,整个项目程序之间的关系、类与类之间的关系就全部存由ioc管理了。如此一来,我们无论要修改哪个类中的数据都不必考虑那么多各个类之间是否有依赖关系了,因为所有关系我们都交给了ioc。(当然只有ioc中存在的关系才能这样~~~~)

三、spring中的工厂与控制反转

控制反转在spring中有极其重要的作用,工厂模式就是控制反转思想的部分体现~~~~,spring中的ioc容器用来存储、管理工厂创建的对象,

易志杰
4 声望0 粉丝