-
观察者模式总结----(二) /** * 观察者的具体实现---天气预报 */ public class WeatherSubject extends Subject { private String weatherState; //当前天气状态 public String getWeatherState() { return weatherState; } /** * 当天气的状态发生改变的时候,要通知到所有的观察者 * @param weatherState */ public void setWeatherState(String weatherState) { this.weatherState = weatherState; notifyAllObserver(weatherState);//调用父类的方法,通知所有的观察者。告知其天气状态 } } /** * 观察者,有update接口,用来接受目标类的通知 */ public interface Observer { /** * @param obj 目标类 调用(通知) 观察者对象该方法时,传入的通知内容 */ void update(Object obj); } 测试 WeatherSubject subject=new WeatherSubject(); //创建天气目标对象 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是观察者A,天气为"+obj); } }); //增添观察者 subject.attach(new Observer() { public void update(Object obj) { System.out.println("我是观察者B,天气为"+obj); } }); System.out.println("通知前。。。。"); subject.setWeatherState("晴天"); System.out.println("通知后。。。。");查看全部
-
观察者模式总结-----(一) /** * 观察者模式: 一个目标类,多个观察者(用来观察目标)。 * 当目标类发生变化时,可以通知到他的所有观察者。 * * 原理:利用回掉函数机制。 所有“观察者类”继承一个“接口”(如Observer),该接口中有一个 * 方法(如,update())。将所有的观察者增添到“目标类”的“链表”中,当目标类的状态发生改变时, * 目标类可以遍历链表中的所有观察者,调用其update通知到所有的观察者。 * * 案例描述:有一个 天气预报(目标) 类,许多观察者类(如,网站,人等)需要第一时间得知天气的变化, * 然后做各自的处理。 */ /** * 目标类,用来增,删观察者,通知观察者 */ public class Subject { private List<Observer> observerList=new ArrayList<>();//存储观察该目标的观察者 /** * 增添一个观察者 * @param observer 要增添的观察者 */ public void attach(Observer observer) { observerList.add(observer); } /** * 删除一个观察者 * @param observer 要删除的观察者 */ public void detach(Observer observer) { observerList.remove(observer); } /** * 通知所有的观察者 * @param obj 要通知的信息 */ public void notifyAllObserver(Object obj) { for(Observer observer: observerList) { observer.update(obj);//遍历所有的观察者,依次调用其update方法。 } } }查看全部
-
观察者实现模式的两种方式,推模式和拉模式。查看全部
-
观察者模式,要通过java的observer类。观察者,你要先创建一个观察者和被观察者。查看全部
-
观察者模式的定义 定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。查看全部
-
观察者模式流程查看全部
-
观察者模式的定义 定义对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。查看全部
-
观察者模式应用场景查看全部
-
模式的秘密---观察者模式——利用Java提供的观察者实现 Java 实现 VS 自己实现的对比四点: (1)不需要再定义观察者和目标接口(JDK已经定义)。 (2)具体的目标实现里面不需要再维护观察者的注册信息,Java中的Observable类里面已经实现。 (3)触发通知的方式有一点变化,要先调用setChanged方法,这个是Java为了帮助实现更精确的触发控制而提供的功能。 (4)具体观察者的实现里面,update方法其实能同时支持推模型和拉模型,这个Java在定义的时候,已经考虑。查看全部
-
命名建议查看全部
-
官方定义查看全部
-
需求总结查看全部
-
3查看全部
-
2查看全部
-
111查看全部
举报
0/150
提交
取消