概述


  • “工厂方法模式” 是对简单工厂模式的进一步抽象化
  • 其好处是可以使系统在不修改原来代码的情况下引进新的产品,即满足开闭原则


实现过程

定义接口与实现类

工厂方法设计模式_解耦

创建工厂

工厂方法设计模式_迪米特法则_02

使用

工厂方法设计模式_设计模式_03

优缺点

优点


  • 用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程
  • 灵活性增强,对于新产品的创建,只需多写一个相应的工厂类
  • 典型的​​解耦​​ 框架。高层模块只需要知道产品的抽象类,无须关心其他实现类,满足迪米特法则、依赖倒置原则和里氏替换原则


缺点


  • 类的个数容易过多,增加复杂度
  • 增加了系统的抽象性和理解难度
  • 抽象产品只能生产一种产品,此弊端可使用抽象工厂模式解决


UML 图

工厂方法设计模式_解耦_04

工厂方法设计模式_解耦_05

在 JDK 源码中的应用


  • URLStreamHandlerFactory
  • Log