大话数据结构 观察者模式

来源:互联网 发布:网络竞彩诈骗 编辑:程序博客网 时间:2024/06/11 09:23
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>();}@Overridepublic void detach(Observer observer) {// TODO Auto-generated method stubobserverList.remove(observer);}@Overridepublic void attach(Observer observer) {// TODO Auto-generated method stubobserverList.add(observer);}@Overridepublic void notifyObserver() {// TODO Auto-generated method stubfor(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>();}@Overridepublic void detach(Observer observer) {// TODO Auto-generated method stubobserverList.remove(observer);}@Overridepublic void attach(Observer observer) {// TODO Auto-generated method stubobserverList.add(observer);}public void setObserverList(List<Observer> observerList) {this.observerList = observerList;}public List<Observer> getObserverList() {return observerList;}@Overridepublic void notifyObserver() {// TODO Auto-generated method stubfor(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}@Overridepublic void update() {// TODO Auto-generated method stubSystem.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}@Overridepublic void update() {// TODO Auto-generated method stubSystem.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();}}