-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTestObserver.java
More file actions
59 lines (57 loc) · 1.4 KB
/
Copy pathTestObserver.java
File metadata and controls
59 lines (57 loc) · 1.4 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
package design.pattern;
import java.util.ArrayList;
interface Observer{
public void update(Subject s);
}
interface Subject{
public void registerObserver(Observer o);
public void removeObserver(Observer o);
public void notifyAllObservers();
}
class HeadHunter implements Subject{
private ArrayList<Observer> userList;
private ArrayList<String> jobs;
public HeadHunter() {
userList = new ArrayList<Observer>();
jobs = new ArrayList<String>();
}
public void registerObserver(Observer o) {
userList.add(o);
}
public void removeObserver(Observer o) {}
public void notifyAllObservers() {
for(Observer o:userList){
o.update(this);
}
}
public void addJob(String job){
this.jobs.add(job);
notifyAllObservers();
}
public ArrayList<String> getJobs(){
return jobs;
}
public String toString() {
return jobs.toString();
}
}
class JobSeeker implements Observer{
private String name;
public JobSeeker(String name) {
this.name = name;
}
public void update(Subject s) {
System.out.println(this.name + " got notified!");
System.out.println(s);
}
}
public class TestObserver {
public static void main(String[] args) {
HeadHunter headHunter = new HeadHunter();
headHunter.registerObserver(new JobSeeker("Mike"));
headHunter.registerObserver(new JobSeeker("Chris"));
headHunter.registerObserver(new JobSeeker("Jeff"));
headHunter.addJob("Google");
headHunter.addJob("Microsoft");
}
}