package study.observer.reader;
import java.util.Observable;
import java.util.Observer;
/**
* 观察者
* @author
* @data 2011-8-15
* @version
*
*/
public class Reader implements Observer
{
private String name;
public Reader(String name)
{
this.name = name;
}
@Override
public void update(Observable o, Object arg)
{
String news = (String)arg;
System.out.println(name + " : " + news);
}
}
被观察者
package study.observer.reader;
import java.util.Observable;
/**
*被观察者
* @author * @data 2011-8-15
* @version
*/
public class NewsDispatcher extends Observable
{
/**
* 添加新闻的时候,把新闻内容发给所有的定义者
* @param news
*/
public void addNews(String news)
{
this.setChanged();
this.notifyObservers(news);
}
}
测试
package study.observer.reader;
public class Test
{
public Test()
{
}
public static void main(String[] args)
{
// 体育新闻派发器
NewsDispatcher sportNewsDispatcher = new NewsDispatcher();
// it新闻派发器
NewsDispatcher itNewsDispatcher = new NewsDispatcher();
// 观察者r1,r2,r3
Reader r1 = new Reader("r1");
Reader r2 = new Reader("r2");
Reader r3 = new Reader("r3");
// 添加观察者
sportNewsDispatcher.addObserver(r1);
sportNewsDispatcher.addObserver(r2);
itNewsDispatcher.addObserver(r3);
// 当有新的新闻的时候,通知观察者
sportNewsDispatcher.addNews("中国队突破了历史获得了世界杯冠军!");
System.out.println("辅导书");
itNewsDispatcher.addNews("ibm 收购 sun公司,java开始收费!");
}
}