创建型设计模式-抽象工厂 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。
代码
output: