创建型设计模式-抽象工厂 Abstract Factory

date
Apr 9, 2021
slug
design-pattern-abstract-factory
status
Published
tags
设计模式
summary
type
Page

简介

拿工厂方法模式作对比,在工厂方法模式中,一个工厂只能创建一种产品,如椅子工厂只能创建椅子。而抽象工厂可以创建一系列产品,如家具工厂可以创建椅子,桌子,床等等。
抽象工厂类负责定义可以创建的抽象产品类,具体工厂编写不同风格(即各自的业务逻辑)的创建产品的过程。
 

角色

  • 抽象工厂
    • 定义工厂可以生产的抽象产品,多个产品则对应多个创建方法
  • 抽象产品
    • 与工厂方法模式中没什么区别,简单定义类属性即可
      可能有多个,抽象椅子,抽象桌子,抽象床等
  • 具体工厂
    • 分别实现抽象工厂中定义的创建产品的方法
      可能有多个,按照不同风格或叫不同业务逻辑,创建一组产品,如古典工厂创建古典风格椅子、桌子、床,现代工厂创建现代风格桌椅床。
  • 具体产品
    • 实现抽象产品即可
      可能有多个,现代风格桌子、古典风格椅子等等
       

类图

图中展示,GUIFactory 抽象工厂定义可以创建 Button 和 Checkbox 抽象产品。
具体工厂WinFactory可以创建出 Win 风格的 WinButton 和 WinCheckbox,MacFatory 可以创建出 Mac 风格的 MacButton 和 MacCheckbox。
notion image
 

代码

 
output:

© 菜皮 2020 - 2024