# 二.抽象工厂模式

前言

抽象⼯⼚模式(Abstract Factory Pattern),提供⼀个创建⼀系列相关或相互依赖对象的接⼝,⽽⽆须 指定它们具体的类。 在⼯⼚⽅法模式中具体⼯⼚负责⽣产具体的产品,每⼀个具体⼯⼚对应⼀种具体产品,⼯⼚⽅法也具有 唯⼀性,⼀般情况下,⼀个具体⼯⼚中只有⼀个⼯⼚⽅法或者⼀组重载的⼯⼚⽅法。 但是有时候我们需 要⼀个⼯⼚可以提供多个产品对象,⽽不是单⼀的产品对象。

  • 抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式
  • 抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体情况下,创建多个产品族中的产品对象

# 1.类图

# 2.代码

class Button {
  render(button) {
    console.log(button)
  }
}
class AppleButton extends Button {}
class WindowsButton extends Button {}
class Icon {
  render(icon) {
    console.log(icon)
  }
}
class AppleIcon extends Icon {}
class WindowsIcon extends Icon {}
class AppleFactory {
  createButton() {
    return new AppleButton("苹果按钮")
  }
  createIcon() {
    return new AppleIcon("苹果图标")
  }
}
class WindowsFactory {
  createButton() {
    return new WindowsButton("Windows按钮")
  }
  createIcon() {
    return new WindowsIcon("Windows图标")
  }
}
const settings = {
  apple: AppleFactory,
  windows: WindowsFactory,
}
let appleFactory = new settings["apple"]()
appleFactory.createButton().render()
appleFactory.createIcon().render()

let windowsFactory = new settings["windows"]()
windowsFactory.createButton().render()
windowsFactory.createIcon().render()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41

# 3 场景