-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSubject.java
More file actions
42 lines (36 loc) · 1.08 KB
/
Subject.java
File metadata and controls
42 lines (36 loc) · 1.08 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
package ObserverPattern;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/*
* 观察者模式可以用于发布订阅
* 用一个List来保存和管理和主题相关联的观察者
* 主要有增加观察者、删除观察者、通知观察者发生改变这三种方法
* 在通知观察者的时候,观察者调用update方法,在实现了观察者接口的子类中进行具体实现
* */
public abstract class Subject {
List<Observerable> observers = new ArrayList<Observerable>();
// public abstract void Attach(Observerable observers);
//
// public abstract void Detach(Observerable observers);
//
// public abstract void Notify();
public void Attach(Observerable observer) {
// TODO Auto-generated method stub
observers.add(observer);
}
public void Detach(Observerable observer) {
// TODO Auto-generated method stub
observers.remove(observer);
}
public void Notify() {
// TODO Auto-generated method stub
if(!observers.isEmpty()){
Iterator<Observerable> it = observers.iterator();
while(it.hasNext()){
Observerable ob = (Observerable) it.next();
ob.Update();
}
}
}
}