# 二.抽象工厂模式
前言
抽象⼯⼚模式(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
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