讲故事,学(Java)设计模式—抽象工厂模式
本文由 ImportNew - 汤米猫 翻译自 programcreek。欢迎加入Java小组。转载请参见文章末尾的要求。
抽象工厂模式是在工厂模式的基础上增加的一层抽象概念。如果比较抽象工厂模式和工厂模式,我们不难发现前者只是增加了一层抽象的概念。抽象工厂是一个父类工厂,可以创建其它工厂类。故我们也叫它“工厂的工厂”。
1、抽象工厂类图

2、抽象工厂Java示例代码
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
42
43
44
45
46
47
48
49
50
51
52
53
54
|
interface
CPU {
void
process();
}
interface
CPUFactory {
CPU produceCPU();
}
class
AMDFactory
implements
CPUFactory {
public
CPU produceCPU() {
return
new
AMDCPU();
}
}
class
IntelFactory
implements
CPUFactory {
public
CPU produceCPU() {
return
new
IntelCPU();
}
}
class
AMDCPU
implements
CPU {
public
void
process() {
System.out.println(
"AMD is processing..."
);
}
}
class
IntelCPU
implements
CPU {
public
void
process() {
System.out.println(
"Intel is processing..."
);
}
}
class
Computer {
CPU cpu;
public
Computer(CPUFactory factory) {
cpu = factory.produceCPU();
cpu.process();
}
}
public
class
Client {
public
static
void
main(String[] args) {
new
Computer(createSpecificFactory());
}
public
static
CPUFactory createSpecificFactory() {
int
sys =
0
;
// 基于特定要求
if
(sys ==
0
)
return
new
AMDFactory();
else
return
new
IntelFactory();
}
}
|
3、实例
在当今的架构中,抽象工厂是一个非常重要的概念。StackOverflow上有关于它的一个例题。