应用:

  • MyBatis 中 SqlSessionFactoryBuilderSqlSessionFactory ,到获取 SqlSession 的过程 - 源码过程跟踪
  • Spring 中 ClientHttpRequestFactory 的获取 到获取 如 SimpleStreamingClientHttpRequest 的过程

# 工厂方法模式应用分析?

  • 优势:相对简答工厂更加灵活,更加适合创建具备等级结果(继承关系)的产品。
  • 劣势:加入每个抽象产品都对应一个具体工厂,那么工厂类可能会比较多。

# 抽象工厂

都想工厂是多个工厂方法的综合应用
需要同时创建多个具备一定等级结构的产品(产品族)

# 抽象工厂对象角色分析

  • 抽象产品(Product)
  • 具体产品(ConcreteProduct)
  • 抽象工厂(Factory)
  • 具体工厂(ConcreteFactory)

例如:ClientHttpRequestFactory

  • 抽象工厂 (ClientHttpRequestFactory)
  • 具体工厂(SimpleClientHttpRequestFactory)
  • 抽象产品(ClientHttpRequest,HttpHeaders…)
  • 具体产品(SimpleStreamingClientHttpRequest…)