简单工厂模式、工厂模式和抽象工厂模式,问题(1)三者的区别在哪里(2)想象一下应用场景,根据消息的标识,得到整个消息对象,这样的描述也似乎也和spring的container意义有相似的地方,那么这种container是否是一种工厂模式呢?
(1) 简单工厂模式是由一个具体的类去创建其他类的实例,父类是相同的,父类是具体的。
工厂方法模式是有一个抽象的父类定义公共接口,子类负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成。
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。它针对的是有多个产品的等级结构。而工厂方法模式针对的是一个产品的等级结构。
总之,所谓工厂就是不需要client亲自创建对象,只要根据一定的标识符,就可以从工厂中的获取对应的实例对象。工厂有容器的作用,可以将对象创建好,或者通过对对象定义文件的解析将对象缓存到一个container中,这个containner应类似于HashMap的作用。后一种方法也即为Spring IOC的基本思想。Spring的IOC还加上了对对象的声明周期的控制等功能。
(2)实际上Spring的IOC的实现就借助了工厂模式的实现,从IOC中最基本的BeanFactory接口就可以看出
一下为Spring IOC的全景,好好理解