一、工厂模式意义

——实现了创建者和调用者的分离

二、详细分类

——简单工厂模式
……用来生产统一等级结构中的任意产品。(对于增加新的产品,需要修改已有代码)

——工厂方法模式
……用来生产统一等级结构中的固定产品(支持增加任意产品)

——抽象工厂模式
……用来生产不同产品族的全部产品。(对于增加新的产品无能为力,支持增加新的产品族)

三、面向对象设计的基本原则(了解)

——SRP(单一职责原则,Single-Responsibiliy Principle)
——OCP(开闭原则,Open Closed Principle)
——LSP(里氏替换原则,Liskov Substitution Principle)
——DIP(依赖倒置原则,Dependence Inversion principle)
——ISP(接口隔离原则,Interface Segregation principle)
——CRP( 合成复用原则,Composite Reuse Principle” )
——LOD(迪米特原则,Low Of Demeter)

四、工厂模式的核心本质:

——实例化对象,用工厂方法代替了new操作
——将选择实现类、创建对象统一管理和控制,从而将调用者跟我们的实现类解耦。

五、工厂模式的要点:

——简单工厂模式(静态工厂模式)
*虽然某种程度上不符合设计原则,但是实际使用较多。
——工厂方法模式
*不修改已有类的前提下,通过增加新的工厂类实现拓展
——抽象工厂模式
*不可以增加产品,可以增加产品族!

六、应用场景

——JDK中Calendar的getInstance()方法
——JDBC中Connection对象的获取
——Hibernate中SessionFactory创建Session
——Spring中的IOC容器创建管理bean对象
——XML解析时的DocumentBuilderFactory创建解析器对象
——反射中Class对象的newInstance()