观察者模式:一对多关系,“多”以赖“一”,当“一”发生变化时,“多”也会相应得到消息通知发生改变。
分三个类对象:
1,subject
2,observerA, observerB,
3,main
代码如下:
public class subject {
private Vector m_oBject = new Vector();
public void attach(observer r_object) {
m_oBject.add(r_object);
System.out.print("attach\n");
}
public void detach(observer r_object) {
m_oBject.remove(r_object);
}
public void notifyElements() {
Iterator it = m_oBject.iterator();
System.out.print("notify observer\n");
while(it.hasNext()) {
observer ob = (observer) it.next();
ob.update();
}
}
}
observerA and observerB
public abstract class observer {
String m_sState;
abstract public void update();
}
public class observerA extends observer{
private subject m_sub;
public observerA(subject ob) {
m_sub = ob;
ob.attach(this);
}
public void update() {
System.out.print("update observerA state" + "\n");
}
}
public class observerB extends observer {
private subject m_sub;
public observerB(subject ob) {
m_sub = ob;
ob.attach(this);
}
public void update() {
System.out.print("update observerB state" + "\n");
}
}
main
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
subject sub = new subject();
observerA oA = new observerA(sub);
observerB oB = new observerB(sub);
sub.notifyElements();
}
}