其他和其它的区别(有什么区别)
1.BeanFactory和FactoryBean的区别BeanFactory是一个接口 , 提供了IOC容器最基本的形式 , 给具体的IOC容器的实现提供了规范FactoryBean也是一个接口 , 为IOC容器中Bean的实现提供了更加灵活的方式 , FactoryBean在IOC容器的基础上给Bean的实现加上了一个简单工厂模式和装饰模式 , 我们可以在getObject()方法中灵活配置 。结论:BeanFactory是个Factory , 也就是IOC容器或对象工厂 , FactoryBean是个Bean 。在Spring中 , 所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的 。但对FactoryBean而言 , 这个Bean不是简单的Bean , 而是一个能生产或者修饰对象生成的工厂Bean , 它的实现与设计模式中的工厂模式和修饰器模式类似
2.BeanFactoryBeanFactory , 以Factory结尾 , 表示它是一个工厂类(接口) , 它负责生产和管理bean的一个工厂 。在Spring中 , BeanFactory是IOC容器的核心接口 , 它的职责包括:实例化、定位、配置应用程序中的对象及建立这些对象间的依赖 。BeanFactory只是个接口 , 并不是IOC容器的具体实现 , 但是Spring容器给出了很多种实现 , 如 DefaultListableBeanFactory、XmlBeanFactory、ApplicationContext等 , 其中XmlBeanFactory就是常用的一个 , 该实现将以XML方式描述组成应用的对象及对象间的依赖关系 。XmlBeanFactory类将持有此XML配置元数据 , 并用它来构建一个完全可配置的系统或应用 。
3.FactoryBean一般情况下 , Spring通过反射机制利用bean的class属性指定实现类实例化Bean , 但是在特殊情况下 , 实例化Bean过程比较复杂 , 如果按照传统的方式 , 则需要在bean中提供大量的配置信息 。配置方式的灵活性是受限的 , 这时采用编码的方式可能会得到一个简单的方案 。Spring为此提供了一个org.springframework.bean.factory.FactoryBean的工厂类接口 , 用户可以通过实现该接口定制实例化Bean的逻辑 。以Bean结尾 , 表示它是一个Bean , 不同于普通Bean的是:它是实现了FactoryBean<T>接口的Bean , 根据该Bean的ID从BeanFactory中获取的实际上是FactoryBean的getObject()返回的对象 , 而不是FactoryBean本身 , 如果要获取FactoryBean对象 , 请在id前面加一个&符号来获取 。
PS.简单工厂模式&工厂方法模式&抽象工厂模式的区别A.简单工厂模式工厂类(SimpleFactory)拥有一个工厂方法(create) , 接受了一个参数 , 通过不同的参数实例化不同的产品类

文章插图
优点:
(1)很明显 , 简单工厂的特点就是“简单粗暴” , 通过一个含参的工厂方法 , 我们可以实例化任何产品类 , 上至飞机火箭 , 下至土豆面条 , 无所不能 。所以简单工厂有一个别名:上帝类 。
缺点:
(1)任何”东西“的子类都可以被生产 , 负担太重 。当所要生产产品种类非常多时 , 工厂方法的代码量可能会很庞大 。
【其他和其它的区别(有什么区别)】(2)在遵循开闭原则(对拓展开放 , 对修改关闭)的条件下 , 简单工厂对于增加新的产品 , 无能为力 。因为增加新产品只能通过修改工厂方法来实现 。
工厂方法正好可以解决简单工厂的这两个缺点 。
B.工厂方法模式工厂方法是针对每一种产品提供一个工厂类 。通过不同的工厂实例来创建不同的产品实例 。

文章插图
优点:
(1)工厂方法模式就很好的减轻了工厂类的负担 , 把某一类/某一种东西交由一个工厂生产;(对应简单工厂的缺点1)
(2)同时增加某一类”东西“并不需要修改工厂类 , 只需要添加生产这类”东西“的工厂即可 , 使得工厂类符合开放-封闭原则 。
缺点:
(1)相比简单工厂 , 实现略复杂 。
(2)对于某些可以形成产品族的情况处理比较复杂 。
对于缺点(2) , 我们可以借用抽象工厂来实现 。
C.抽象工厂模式抽象工厂是应对产品族概念的 。例如 , 汽车可以分为轿车、SUV等 , 也分为奔驰、宝马、奥迪等 。我们可以将奔驰的所有车看作是一个产品族 , 而将宝马的所有车看作是另一个产品族 。分别对应两个工厂 , 一个是奔驰的工厂 , 另一个是宝马的工厂 。与工厂方法不同 , 奔驰的工厂不只是生产具体的某一个产品 , 而是一族产品(奔驰轿车、奔驰SUV) 。“抽象工厂”的“抽象”指的是就是这个意思 。上边的工厂方法模式是一种极端情况的抽象工厂模式(即只生产一种产品的抽象工厂模式) , 而抽象工厂模式可以看成是工厂方法模式的一种推广

文章插图
只有对应产品族的情况下 , 才需要使用抽象工厂模式 。
D.总结简单工厂:用来生产同一等级结构中的任意产品工厂方法:用来生产同一等级结构中的固定产品抽象工厂:用来生产不同产品族的全部产品
工厂类通常采用单例模式(Singleton)工厂类拥有基类(定义共同接口) , 基类可以为接口 , 也可以定义抽象类对于工厂方法和抽象工厂 , 基类中的生产产品的函数常常为抽象方法 , 以实现动态绑定 。
- 受益良多和受益匪浅的区别(让你受益匪浅的话)
- 石章|女子学车不到一个月,就和教练谈起了恋爱,怀孕后坚持要生下孩子
- 差距|38周和40周胎儿区别多大?别小看14天,3个方面差距可不小
- 孕妇|春节临近,孕妇要牢记这7个底线,不然孕妇和胎儿会受罪
- 准妈妈|孕妇睡觉前,尽量别做这5件事,对孕妈和胎儿都有害
- 性别|为何男孩出生率越来越高?原因有4点,和家长脱不开关系
- 年龄|家长要注意了,生二胎要避开这2种年龄差,可能影响孩子们不和睦
- 卵巢|月经周期和衰老有关25天和30天来一次例假的女人,谁老得更快
- 和小姑娘谈恋爱(遇到没谈过恋爱的女生)
- 肌肉少女和拳愿阿修罗联动(拳愿阿修罗猛虎)
