- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFactoryTest.java
More file actions
Latest commit
96 lines (72 loc) · 1.57 KB
/
Copy pathFactoryTest.java
File metadata and controls
96 lines (72 loc) · 1.57 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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
packageJavaPatternDemos;
/**
* 抽象工厂方法
*
* 不同的工厂生成不同系列的产品
*/
publicclassFactoryTest {
publicstaticvoidmain(String[] args) {
BaseFactorydalian = newDalianFactory();
BaseFactorybeijing = newBeijingFactory();
EatabledalianEating = dalian.createEat();
DrinkabledalianDrinking = dalian.createDrink();
EatablebeijingEating = beijing.createEat();
dalianEating.eat();
beijingEating.eat();
dalianDrinking.drink();
}
}
interfaceEatable{
voideat();
}
classAppleimplementsEatable{
@Override
publicvoideat() {
System.out.println("eat apple");
}
}
classBananaimplementsEatable{
@Override
publicvoideat() {
System.out.println("eat Banana");
}
}
interfaceDrinkable {
voiddrink();
}
classColaimplementsDrinkable{
@Override
publicvoiddrink() {
System.out.println("Drink cola");
}
}
abstractclassBaseFactory {
publicabstractEatablecreateEat();
publicabstractDrinkablecreateDrink();
}
/**
* 大连工厂产苹果
*/
classDalianFactoryextendsBaseFactory {
@Override
publicEatablecreateEat() {
returnnewApple();
}
@Override
publicDrinkablecreateDrink() {
returnnewCola();
}
}
/**
* 北京工厂生产香蕉
*/
classBeijingFactoryextendsBaseFactory {
@Override
publicEatablecreateEat() {
returnnewBanana();
}
@Override
publicDrinkablecreateDrink() {
returnnewCola();
}
}