-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDS08_Composite.java
More file actions
113 lines (78 loc) · 2.26 KB
/
DS08_Composite.java
File metadata and controls
113 lines (78 loc) · 2.26 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
105
106
107
108
109
110
//Component
import java.util.*;
abstract class Employer {
private String name;
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public abstract void add(Employer employer);
public abstract void delete(Employer employer);
public List employers;
public void printInfo() {
System.out.println(name);
}
public List getEmployers() {
return this.employers;
}
}
//Leaf
class Programmer extends Employer {
public Programmer(String name) {
setName(name);
employers = null;//程序员, 表示没有下属了
}
public void add(Employer employer) {
}
public void delete(Employer employer) {
}
}
class ProcectAssistant extends Employer {
public ProcectAssistant(String name) {
setName(name);
employers = null;//项目助理, 表示没有下属了
}
public void add(Employer employer) {
}
public void delete(Employer employer) {
}
}
//Composite
class ProjectManager extends Employer {
public ProjectManager(String name) {
setName(name);
employers = new ArrayList();
}
public void add(Employer employer) {
employers.add(employer);
}
public void delete(Employer employer) {
employers.remove(employer);
}
}
//Client
public class DS08_Composite {
public static void main(String[] args) {
Employer pm = new ProjectManager("项目经理");
Employer pa = new ProcectAssistant("项目助理");
Employer programmer1 = new Programmer("程序员一");
Employer programmer2 = new Programmer("程序员二");
pm.add(pa);//为项目经理添加项目助理
pm.add(programmer2);//为项目经理添加程序员
//注意,这里如果不加<>里面的东西,竟然不能编译通过,这个是因为泛型编程
List<Employer> ems = pm.getEmployers();
int emsCount = ems.size();
for(int i = 0; i <emsCount;++i)
{
Employer em = ems.get(i);
System.out.println(em.getName());
}
/*
for (Employer em : ems) {
System.out.println(em.getName());
}
*/
}
}