简单理解观察者模式 /** * 主题(被观察者信息) */ public interface Subject { /** * 注册观察此对象 */ boolean registerObserver(Observer observer); /** * 删除此对象 */ boolean removeObserver(Observer observer); /** * 通知变化 * 当主题状态改变时, 这个方法会被调用,以通知所有的观察者。 */ int notifyObservers(); } /** * 观察者接口 */ public interface Observer { /** * 更新数据 * 所有的观察者都必须实现update()方法,以实现观察者接口。在这里,我们按照Mary和Sue的想法把观测值传入观察者中 * @return */ boolean update(double temp,double humidity,double pressure); } /** * 不同的显示 */ public interface DisplayElement { void display(); } /** * 主题对象类 */ public class WeatherData implements Subject { private List<Observer> observers = new ArrayList<Observer>(); private double temperature; private double humidity; private double pressure; public WeatherData() { } @Override public boolean registerObserver(Observer observer) { return observers.add(observer); } @Override public boolean removeObserver(Observer observer) { if(observers != null || observers.isEmpty()){ throw new RuntimeException("注册列表为空"); } return observers.remove(observer); } @Override public int notifyObservers() { if(observers == null || observers.isEmpty()){ return 0; } int result = 0; for (int i = 0,size=observers.size(); i < size; i++) { Observer o = observers.get(i); o.update(temperature, humidity, pressure); result++; } return result; } /** * 主题发生变化,通知观察者 */ public void measurementsChanged() { notifyObservers(); } /** * 改变主题 */ public void setMeasurements(double temperature, double humidity, double pressure) { this.temperature = temperature; this.humidity = humidity; this.pressure = pressure; measurementsChanged(); } } /** * 观察者对象类 */ public class CurrentConditionsDisplay implements Observer,DisplayElement { private double temperature; private double humidity; private Subject weatherData; public CurrentConditionsDisplay(Subject weatherData) { this.weatherData = weatherData; weatherData.registerObserver(this); } @Override public boolean update(double temp, double humidity, double pressure) { this.temperature = temp; this.humidity = humidity; display(); return true; } @Override public void display() { System.out.println("Current conditions: " + temperature + "F degrees and " + humidity + "% humidity"); } } /** * 数据源 */ public class WeatherStation { public static void main(String[] args) { WeatherData wd = new WeatherData(); CurrentConditionsDisplay ccd = new CurrentConditionsDisplay(wd); wd.setMeasurements(80, 60, 30); wd.setMeasurements(81, 61, 31); wd.setMeasurements(82, 62, 32); } }
相关推荐
2.gif、1.gif、3.gif、4.1.gif、4.2.gif这些文件很可能是用来辅助理解观察者模式的图形表示。它们可能展示了主题对象与多个观察者之间的关系,以及当主题状态改变时,观察者如何被通知并更新的流程。 订阅模式: ...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于实现事件驱动编程或者...
观察者模式(Observer)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态变化时通知多个“观察”该对象的其他对象。这个模式在软件工程中扮演着重要角色,尤其是在事件驱动编程和发布/订阅系统中。...
观察者模式(Observer)是一种行为设计模式,它允许你定义一个订阅机制,可以在对象状态变化时通知多个“观察”该对象的其他对象。这个模式在软件工程中广泛应用于事件驱动编程,例如用户界面组件的交互或者系统状态的...
**C#面向对象设计模式纵横谈(19)**:**观察者模式**(Observer Pattern)是行为型模式的一种,它在软件工程中扮演着至关重要的角色...通过实践和理解观察者模式,开发者可以更好地应对实时数据更新、事件驱动编程等挑战。
1. 理解观察者模式的基本概念和作用。 2. MFC的消息机制和消息映射表的使用。 3. 创建抽象观察者和被观察者类,定义通知接口。 4. 使用`CWinThread`实现异步消息处理。 5. 在消息映射表中定义监听的特定消息类型。 6...
通过使用观察者模式,可以实现松耦合,让系统更加灵活,增加新的功能或改变现有行为变得简单。 在实际编程中,要注意的是,过多的观察者可能会导致性能下降,因为通知所有观察者可能是一项昂贵的操作。此外,确保...
### (行为型模式) Observer 观察者模式 #### 概述 观察者模式是一种行为设计模式,它定义了一种一对多的关系,让多个观察对象同时监听某一个主题对象。当主题对象发生变化时,所有观察者对象都会收到通知并进行...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现发布-订阅...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
观察者模式(Observer Pattern)是软件设计模式中的行为模式之一,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或发布-...
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象...在实际开发中,理解并合理运用观察者模式,能够有效地实现对象之间的交互和通信,提升代码的灵活性和可维护性。
Observer观察者模式是一种设计模式,属于行为模式的一种,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式广泛应用于事件驱动编程和实时系统...
《设计模式——观察者》 ...在实际开发中,理解并熟练运用观察者模式能够帮助我们构建更稳定、可维护的系统。无论是简单的用户界面交互,还是复杂的业务逻辑处理,观察者模式都能提供一种有效的解耦方案。
观察者模式(Observer Pattern)是软件设计模式的一种,属于行为型模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,观察者模式主要通过...
在提供的压缩包文件中,`观察者模式模版和例子`可能包含了实现这些概念的代码示例,通过阅读和理解这些代码,你可以更好地掌握观察者模式的实现细节和应用方式。为了深入学习,建议先了解观察者模式的基本概念,然后...
观察者模式是软件设计模式中的一种行为模式,它在Android开发中被广泛应用,尤其是在处理事件响应和组件间的通信。这个模式允许对象订阅另一个对象的...理解和熟练运用观察者模式,对于提升Android开发技能至关重要。
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动的编程...