工厂模式 Factory Method

发布时间 2023-12-21 08:54:44作者: 梅丹隆

一、简单工厂

定义一个工厂类,根据传入的参数的值的不同返回不同是实例

1、特点

被创建的实例具有共同的父类或接口
image.png

2、适用场景

  • 需要创建的对象较少
  • 客户端(应用层)只知道传入工厂的参数,对如何创建对象(逻辑)不关心

3、优缺点

优点:
可以对创建的对象进行“加工”,对客户端隐藏相关细节
缺点:

  • 因创建逻辑复杂或创建对象过多而造成代码臃肿
  • 新增、删除子类均会违反开闭原则 OpenClose

4、代码参考

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/creational/simplefactory

UML类图
image.png

二、工厂方法模式

1、特点

定义一个用于创建对象的接口,让子类决定实例化哪一个类

  • 对类的实例化延迟到其子类

image.png

2、使用场景

  • 创建对象需要大量重复的代码
  • 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
  • 一个类通过其子类来指定创建哪个对象

3、优缺点

优点:

缺点:

  • 添加子类的时候“拖家带口”(类的个数容易过多,增加系统复杂度)
  • 只支持用一类产品的创建

4、代码参考

https://github.com/Meidanlong/all-in-one/tree/master/design/src/main/java/com/mdl/design/pattern/creational/factorymethod

UML类图
image.png