吉安律师网站建设,app找什么公司,做定制网站价格,企业网络营销信息源类别及传递渠道调查观察者模式#xff08;Observer Pattern#xff09;是一种行为设计模式#xff0c;它定义了一种一对多的依赖关系#xff0c;让多个观察者对象同时监听某一个主题对象#xff0c;当主题对象状态发生变化时#xff0c;所有依赖于它的观察者都会得到通知并自动更新。
该模… 观察者模式Observer Pattern是一种行为设计模式它定义了一种一对多的依赖关系让多个观察者对象同时监听某一个主题对象当主题对象状态发生变化时所有依赖于它的观察者都会得到通知并自动更新。
该模式主要涉及两种角色 主题Subject 也称为被观察者或可观察对象是目标对象。它包含一系列观察者并提供方法来添加、删除观察者以及通知观察者的操作。 观察者Observer 也称为订阅者它定义了一个更新的接口用于主题在状态发生变化时通知观察者。 观察者模式的核心思想是解除主题和观察者之间的耦合关系使得它们可以独立变化。当主题的状态发生变化时所有的观察者都能够及时得到通知并进行相应的处理。 下面是一个简单的观察者模式的例子假设我们有一个气象站它可以实时测量温度并通知多个观察者
import java.util.ArrayList;
import java.util.List;// 主题接口
interface Subject {void addObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers();
}// 观察者接口
interface Observer {void update(float temperature);
}// 具体主题
class WeatherStation implements Subject {private ListObserver observers new ArrayList();private float temperature;public void setTemperature(float temperature) {this.temperature temperature;notifyObservers();}Overridepublic void addObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(temperature);}}
}// 具体观察者
class Display implements Observer {private float temperature;Overridepublic void update(float temperature) {this.temperature temperature;display();}public void display() {System.out.println(Current Temperature: temperature);}
}// 客户端
public class Client {public static void main(String[] args) {WeatherStation weatherStation new WeatherStation();Display display1 new Display();Display display2 new Display();weatherStation.addObserver(display1);weatherStation.addObserver(display2);// 模拟温度变化weatherStation.setTemperature(25.5f);weatherStation.setTemperature(28.0f);}
}在这个例子中WeatherStation 是具体主题实现了 Subject 接口。Display 是具体观察者实现了 Observer 接口。客户端通过调用 addObserver 方法将观察者注册到主题中然后通过 setTemperature 方法模拟温度的变化观察者会收到通知并更新自己的状态。