1.工厂模式的主要目的是:实现了调用者和创建者分离,实例化对象,使用工厂类方法来替代new操作,将实现类,创建对象统一管理和控制。从而将调用者和实现类进行解耦。
2.工厂模式 类型:
- 简单工厂模式:用来生产已知的产品(对于新增的产品需要修改工厂类,违背了面向对象的ocp原则),示例代码链接简单工厂模式代码。
- 工厂方法模式:弥补了简单工厂模式中违背了OCP原则,对于新增的产品不需要修改之前的代码,只需要添加新的工厂类工厂方法模式代码。
- 抽象工厂模式:用于新增产品族(不同产品的集合,可能每个产品有不同的配置组合在一起)抽象工厂模式代码。
3简单工厂和工厂方法的优缺点:
- 结构复杂度:简单工厂只需要一个工厂类就可以,而工厂方法模式产品越多,工厂类就越多。
- 代码复杂度:简单工厂中的工厂类随着产品的增加,比较复杂每个产品都在一个工厂类中生产;工厂方法模式每个工厂类就只生产单个产品。
- 客户端编码难度:简单工厂模式直接使用静态方法创建工厂,而工厂方法模式需要对工厂类实例化。
- 虽然工厂方法模式符合OCP原则,实际上我们一般使用简单工厂模式。
4.应用场景:
- JDK中Calendar的getInstance方法
- JDBC中Connection对象的获取
- Hibernate中SessionFactory创建Session
- spring中IOC容器创建管理bean对象
- XML解析时的DocumentBuilderFactory创建解析器对象
- 反射中Class对象的newInstance()