工厂模式(下)
这篇文章主要涉及的内容是依赖注入框架,或者叫依赖注入容器,简称DI容器。
工厂模式和 DI 容器的区别
DI 容器底层最基本的设计思路就是基于工厂模式的。DI 容器相当于一个大的工厂 类,负责在程序启动的时候,根据配置(要创建哪些类对象,每个类对象的创建需要依赖哪 些其他类对象)事先创建好对象。当应用程序需要使用某个类对象的时候,直接从容器中获取即可。
一个工厂类只负责某个对象或者某一组相关类的创建,而DI容器负责的是整个应用中所有类对象的创建。
DI 容器的核心功能
一般有三个:配置解析、对象创建和对象生命周期管理。
配置解析
工厂类要创建哪个对象都是写死的,属于事先定义好的,但是DI容器并不知道应用会创建哪个对象,与不可能全部写死。
我们将需要由 DI 容器来创建的类对象和创建类对象的必要信息(使用哪个构造函数以及对 应的构造函数参数都是什么等等),放到配置文件中。容器读取配置文件,根据配置文件提供的信息来创建对象。
DI容器通过解析这些配置文件,来得知具体创建哪些对象。
对象创建
在 DI 容器中,如果我们给每个类都对应创建一个工厂类,那项目中类的个数会成倍增加,我们只需要将所有类对象的创建都放到 一个工厂类中完成就可以了,比如 BeansFactory。
而通过反射,我们可以保证BeansFactory中的代码并不会根据创建对象的增加而增多,不管是创建一个对象还是十个对象, BeansFactory 工厂类代码都是一样的。
生命周期管理
参考
《设计模式之美》