forked from DreamCats/java-notes
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFactoryMode.java
More file actions
73 lines (61 loc) · 1.66 KB
/
FactoryMode.java
File metadata and controls
73 lines (61 loc) · 1.66 KB
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
/**
* @program JavaBooks
* @description: 工厂模式
* @author: mf
* @create: 2019/09/30 09:59
*/
/*
简单工厂模式
工厂模版模式
抽象工厂模式
说白了, 就是为解耦。。。
*/
// 举个例子
abstract class INoodles {
/**
* 描述每种面条长什么样的...
*/
public abstract void desc();
}
// 先来一份兰州拉面(具体产品类)
class LzNoodles extends INoodles {
@Override
public void desc() {
System.out.println("兰州拉面,成都的好贵 家里的才5-6块钱一碗");
}
}
// 程序员加班也的来一份泡面哈 (具体产品类)
class PaoNoodles extends INoodles {
@Override
public void desc() {
System.out.println("泡面可还行...");
}
}
// 家乡的杂酱面,那才叫好吃撒...
class ZaNoodles extends INoodles {
@Override
public void desc() {
System.out.println("杂酱面,嗯? 真香...");
}
}
// 开个面馆吧... 做生意
class SimpleNoodlesFactory {
public static final int TYPE_LZ = 1; // 兰州拉面
public static final int TYPE_PAO = 2; // 泡面撒
public static final int TYPE_ZA = 3; // 杂酱面
// 提供静态方法
public static INoodles createNoodles(int type) {
switch (type) {
case TYPE_LZ:return new LzNoodles();
case TYPE_PAO:return new PaoNoodles();
case TYPE_ZA:return new ZaNoodles();
default:return new ZaNoodles();
}
}
}
public class FactoryMode {
public static void main(String[] args) {
INoodles noodles = SimpleNoodlesFactory.createNoodles(SimpleNoodlesFactory.TYPE_ZA);
noodles.desc();
}
}