1. 定义

抽象工厂模式提供一个接口, 用于创建相关或依赖对相关的家族, 而不需要明确指定具体的类

image.png

角色

  1. 抽象工厂: 定义了一个接口, 接口中包含一组方法来生产 产品
  2. 具体工厂: 具体工厂实现了抽象工厂
  3. 抽象产品: 抽象产品可以有多个
  4. 具体产品: 实现了抽象产品, 由具体工厂来创建

举例

JDBC里面的一坨东西就是抽象工厂模式

  1. 抽象工厂: java.sql.Connection
  2. 具体工厂: com.mysql.cj.jdbc.ConnectionImpl , com.zaxxer.hikari.pool.HikariProxyConnection, com.alibaba.druid.proxy.jdbc.ConnectionProxyImpl
  3. 抽象产品: java.sql.Statement, java.sql.DatabaseMetaData
  4. 具体产品: com.alibaba.druid.pool.DruidPooledCallableStatement, com.zaxxer.hikari.pool.HikariProxyStatement, com.zaxxer.hikari.pool.HikariProxyDatabaseMetaData, com.alibaba.druid.proxy.jdbc.DatabaseMetaDataProxyImpl