Dawn's Blogs

分享技术 记录成长

0%

Easy搞定Golang设计模式 (2) 创建型模式之简单工厂模式 工厂方法模式

简单工厂模式

简单工厂模式就是用一个工厂类负责生产所有的产品。其结构和职责如下:

  • 工厂角色:简单工厂模式的核心,负责生产所有的产品。工厂类可以被外界直接调用,创建所需的产品对象。
  • 抽象产品角色:工厂所创建对象的父类,描述产品的接口。
  • 具体产品角色:工厂所创建的对象。

image-20230418165944956

优缺点

优点:

  • 实现了对象创建和使用的分离。

缺点:

  • 工厂类职责过重,所有的产品均通过工厂类生产。
  • 违反开闭原则,添加新产品需要修改工厂逻辑,工厂越来越复杂。

工厂方法模式

在工厂方法种,将工厂抽象为一个抽象工厂,具体的工厂是抽象工厂的一个实现类。其角色和职责如下:

  • 抽象工厂角色:工厂方法模式的核心,任何工厂类都必须实现这个接口。
  • 工厂角色:是抽象工厂的一个实现,负责实例化产品对象。
  • 抽象产品角色:工厂所创建对象的父类,描述产品的接口。
  • 具体产品角色:工厂角色所创建的对象。

image-20230418170410589

优缺点

优点:

  • 实现了对象创建和使用的分离。
  • 对于新产品的创建,符合开闭原则。

缺点:

  • 每一种工厂负责一个产品的实现,增加了类的个数,抽象性和理解难度增加。