package org.ustc.observer;
public abstract class Notifier {
public abstract void detach(Observer observer);
public abstract void attach(Observer observer);
public abstract void notifyObserver();
private String state;// 通知者状态
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
package org.ustc.observer;
import java.util.ArrayList;
import java.util.List;
public class Counter extends Notifier {
private List<Observer> observerList ;
public List<Observer> getObserverList() {
return observerList;
}
public void setObserverList(List<Observer> observerList) {
this.observerList = observerList;
}
public Counter() {
observerList = new ArrayList<Observer>();
}
@Override
public void detach(Observer observer) {
// TODO Auto-generated method stub
observerList.remove(observer);
}
@Override
public void attach(Observer observer) {
// TODO Auto-generated method stub
observerList.add(observer);
}
@Override
public void notifyObserver() {
// TODO Auto-generated method stub
for(Observer o:observerList)
o.update();
}
}
public abstract class Observer {
protected String name;
protected Notifier notifier;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Notifier getNotifier() {
return notifier;
}
public void setNotifier(Notifier notifier) {
this.notifier = notifier;
}
public Observer(String name, Notifier notifier) {
this.name = name;
this.notifier = notifier;
}
public abstract void update();
}
package org.ustc.observer;
import java.util.ArrayList;
import java.util.List;
public class Boss extends Notifier {
private List<Observer> observerList ;
public Boss() {
observerList = new ArrayList<Observer>();
}
@Override
public void detach(Observer observer) {
// TODO Auto-generated method stub
observerList.remove(observer);
}
@Override
public void attach(Observer observer) {
// TODO Auto-generated method stub
observerList.add(observer);
}
public void setObserverList(List<Observer> observerList) {
this.observerList = observerList;
}
public List<Observer> getObserverList() {
return observerList;
}
@Override
public void notifyObserver() {
// TODO Auto-generated method stub
for(Observer o:observerList)
o.update();
}
}
package org.ustc.observer;
public class NbaWatcher extends Observer {
public NbaWatcher(String name, Notifier notifier) {
super(name, notifier);
// TODO Auto-generated constructor stub
}
@Override
public void update() {
// TODO Auto-generated method stub
System.out.println(notifier.getState()+"关闭nba直播");
}
}
package org.ustc.observer;
public class StockBroker extends Observer {
public StockBroker(String name, Notifier notifier) {
super(name, notifier);
// TODO Auto-generated constructor stub
}
@Override
public void update() {
// TODO Auto-generated method stub
System.out.println(notifier.getState()+"关掉股票");
}
}
package org.ustc.observer;
public class Main {
public static void main(String[] args) {
Notifier boss = new Boss();
boss.setState("我胡汉三回来了");
Observer nash = new NbaWatcher("nash", boss);
Observer buffat = new StockBroker("buffat", boss);
boss.attach(nash);
boss.attach(buffat);
boss.notifyObserver();
boss.detach(buffat);
boss.notifyObserver();
}
}