✅
-
通过静态方法或实例方法创建对象
-
封装对象创建过程(基于条件的不同创建不同的具体产品)
-
JDBC
-
Druid
-
Mybatis
- 抽象产品对象
- 具体产品对象
- 具体工厂对象
- 优势&劣势
- 优势:解耦(对象应用者和对象创建者之间的耦合),简单
- 劣势:可扩展性比较差(创建产品对象的工厂方法不够灵活)
- 创建型模式(负责创建对象)
- 工厂模式(平常所说的工厂方法模式就是工厂模式)
- 此模式的特点就是基于抽象工厂扩展具体工厂然后创建产品对象
- Mybatis
- Shiro
- Spring
-
抽象产品(Product)
-
具体产品(ConcreteProduct)
-
抽象工厂(Factory)
-
具体工厂(ConcreteFactory)
例如:mybatis 中创建 SqlSession 对象
Spring 整合 mybatis 时,SqlSessionFactory 对象过程分析
- 优势:相对于简单工厂更加灵活,更加适合创建具体等级结构(继承关系)的产品
- 劣势:假如每一个抽象产品都对应一个具体工厂,那么工厂类可能比较多。
最难!!!最复杂!!!
-
工厂方法模式用于创建具备一定等级结构的产品
-
抽象工厂时多个工厂方法的综合应用,因为它要创建多个具备一定等级结构的产品,我们可以将这些产品理解成产品族。
产品族 -> 多个抽象产品
-
Spring(ClienHttpRequestFactory):了解消息头,消息体对象创建
-
....
- 抽象产品(Product)
- 具体产品(ConcreteProduct)
- 抽象工厂(Factory)
- 具体工厂(ConcreteFactory)
- 优势:工厂方法模式可能会产生很多个工厂类,基于此....
- 类适配器模式
- 对象适配器模式
???