- Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuilderTest.java
More file actions
Latest commit
106 lines (78 loc) · 1.79 KB
/
Copy pathBuilderTest.java
File metadata and controls
106 lines (78 loc) · 1.79 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
93
94
95
96
97
98
99
100
101
102
103
104
packageJavaPatternDemos;
/**
* 创造模式
*
* 关注于复杂产品的创造过程,不同的Builder创造不同属性的产品
*/
publicclassBuilderTest {
publicstaticvoidmain(String[] args) {
HouseBuildingoneBuilder = newBuilder(); // 只需要换施工队就行
BuildManagerbuildMgr = newBuildManager(oneBuilder);
Househs = buildMgr.make();
}
}
classRoof{
Roof(){}
Roof(Stringdesc_){this.desc = desc_;}
privateStringdesc = "roof";
publicStringgetDesc() {
returndesc;
}
}
classFloor{
Floor(){}
Floor(Stringdesc_){this.desc = desc_;}
privateStringdesc = "floor";
publicStringgetDesc() {
returndesc;
}
}
classHouse{
privateRoofmRoof;
privateFloormFloor;
publicvoidsetRoof(RoofmRoof) {
this.mRoof = mRoof;
}
publicvoidsetFloor(FloormFloor) {
this.mFloor = mFloor;
}
publicRoofgetRoof() {
returnmRoof;
}
publicFloorgetFloor() {
returnmFloor;
}
}
interfaceHouseBuilding{
voidbuild_floor();
voidbuild_roof();
publicHousebuild();
}
classBuilderimplementsHouseBuilding{
privateHousemHouse = newHouse();
@Override
publicvoidbuild_floor() {
Floorfl = newFloor();
mHouse.setFloor(fl);
}
@Override
publicvoidbuild_roof() {
Roofrf = newRoof();
mHouse.setRoof(rf);
}
publicHousebuild(){
returnmHouse;
}
}
classBuildManager {
privateHouseBuildingmBuilder;
BuildManager(HouseBuildingbuilder){
mBuilder = builder;
// 在这里控制逻辑
}
publicHousemake(){
mBuilder.build_floor();
mBuilder.build_roof();
returnmBuilder.build();
}
}