在此强调,在使用java中的Observable,.setChanged()必须调用,否则刷新不出来信息
//目标函数
public class ConteneObserve extends Observable{
private String weather;
public String getWeather() {
return weather;
}
public void setWeather(String weather) {
this.weather = weather;
//注意在通知之前 ,再用java中的Observable,下面这个方法不可少
this.setChanged();
//使用拉模式
//this.notifyObservers();
//使用推模式
this.notifyObservers(weather);
}
}
//观察者
public class Watch implements Observer{
//定义观察者姓名
private String watchName;
public String getWatchName() {
return watchName;
}
public void setWatchName(String watchName) {
this.watchName = watchName;
}
//捕获更新信息的方法
public void update(Observable observable, Object data) {
//拉模式
String weather = ((ConteneObserve)observable).getWeather();
System.out.println(watchName+"收到了信息,通过拉模式得到的信息内容为 :"+weather);
System.out.println(watchName+"收到了信息,通过推模式得到的信息内容为 :"+data);
}
}
//在MainActivity中测试
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//创建目标
ConteneObserve observe = new ConteneObserve();
//创建观察者
Watch watch = new Watch();
watch.setWatchName("甄嬛");
Watch watch1 = new Watch();
watch1.setWatchName("芈八子");
//添加观察者
observe.addObserver(watch1);
observe.addObserver(watch);
//更新信息
observe.setWeather("今天天气晴朗");
}
}
使用java提供的Observable,实现观察者模式
最新推荐文章于 2023-04-30 18:05:44 发布