The Abstract Factory design pattern provides a way to create families of related
objects without specifying their concrete classes. It ensures consistency among
objects in a family and promotes flexibility when adding new variants or
configurations.
«
+
+
D
+
+
A
T
c
c
«
a
c
c
b
h
r
r
C
r
r
r
s
e
e
e
o
k
e
e
t
m
a
a
L
+
+
n
T
a
a
r
e
t
t
«
i
c
c
c
h
t
t
a
d
e
e
C
g
r
r
r
e
e
e
c
C
B
M
o
h
e
e
e
m
B
M
t
o
u
o
n
t
a
a
t
e
u
o
F
m
t
d
c
T
t
t
e
d
t
d
a
p
t
a
r
h
e
e
F
C
t
a
c
o
o
l
e
e
B
M
a
o
o
l
t
n
n
(
t
m
u
o
c
m
n
(
o
e
(
)
e
e
t
d
t
p
(
)
r
n
)
F
d
t
a
o
o
)
y
t
a
C
o
l
r
n
»
c
o
n
(
y
e
t
m
(
)
1
n
o
p
)
»
t
r
o
y
n
2
e
╶
»
n
t
╶
«
L
«
L
P
i
╶
P
i
╶
r
g
r
g
o
h
╶
o
h
╶
d
t
d
t
u
M
╵
╵
╵
+
╵
╵
╵
u
B
╶
c
o
c
u
t
d
t
t
╶
A
a
A
t
2
l
2
o
╶
»
»
n
╶
«
╶
A
b
╶
s
«
t
A
╶
r
b
a
s
╶
c
M
t
t
o
r
╶
P
d
a
B
r
a
c
u
╶
o
l
t
t
d
P
t
╶
u
r
o
c
o
n
╶
t
d
A
u
╶
»
c
«
D
«
t
P
a
╶
P
D
B
r
r
r
a
»
o
k
╶
o
r
d
B
d
k
u
u
╶
u
M
c
t
c
o
t
t
╶
t
d
A
o
A
a
2
n
┴
C
1
l
»
l
»
╵
╵
╵
╵
╵
╵
╰
╶
i
╶
e
╶
╶
n
╮
╵
╵
╵
╵
╵
╵
╯
t