package Obseiver;public interface Subject { public void register(Obseivers o); public void delete(Obseivers o); public void notifyAllSubeject();}package Obseiver;public interface Obseivers { public void update(float wendu, float fengji);}package Obseiver;public interface Display { public void display();}package Obseiver;import java.util.ArrayList;public class WeaterDate implements Subject { // 建立一个用户观察者的数组 PRivate ArrayList obseiverss; // 建立三个更新的变量 private float WenDu; private float FengJi; // 空的构造方法 public WeaterDate() { obseiverss = new ArrayList(); } public void register(Obseivers o) { // TODO Auto-generated method stub obseiverss.add(o); } @Override public void delete(Obseivers o) { // TODO Auto-generated method stub int indexId = obseiverss.indexOf(o); if (indexId >= 0) { obseiverss.remove(indexId); } } // 这里有一个设置状态的方法 public void setStatements(float wendu, float fengji) { this.WenDu = wendu; this.FengJi = fengji; changed(); } private void changed() { // TODO Auto-generated method stub notifyAllSubeject(); } @Override public void notifyAllSubeject() { // 提醒所有的观察者,更新信息! for (Object obseiver : obseiverss) { Obseivers o = (Obseivers) obseiver; o.update(WenDu, FengJi); } }}package Obseiver;public class Obseiver_one implements Obseivers, Display { // 先声明成员变量 private float wendu; private float fengji; private WeaterDate weaterDate;// 这里设置成成员变量的原因是方便后来可能的取消注册 // 在构造方法里面祖册 public Obseiver_one(Subject weaterDate) { weaterDate = (WeaterDate) weaterDate; weaterDate.register(this); } @Override public void update(float wendu, float fengji) { // TODO Auto-generated method stub // 更新数据 this.wendu = wendu; this.fengji = fengji; display(); } @Override public void display() { // TODO Auto-generated method stub System.out.println("风级是:" + fengji + "温度是:" + wendu + "!"); }}package Obseiver;public class Test { public static void main(String[] args) { // TODO Auto-generated method stub WeaterDate weaterDate = new WeaterDate(); Obseiver_one obseiver_one = new Obseiver_one(weaterDate); weaterDate.setStatements(100, 123); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } weaterDate.setStatements(111, 123); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } weaterDate.setStatements(222, 123); }}
新闻热点
疑难解答