java 一个类监听另一个类值变化实现
时间: 2023-12-10 22:42:46 浏览: 47
Java提供了一种观察者模式(Observer Pattern),可以实现一个类监听另一个类的值变化。
观察者模式的基本思想是:当一个对象(被观察者)发生改变时,所有依赖它的对象(观察者)都会得到通知并自动更新。
具体实现步骤如下:
1.定义一个被观察者类,包含要监听的属性和一个ArrayList来保存所有观察者。
```
public class Observable {
private int value;
private List<Observer> observers = new ArrayList<>();
public int getValue() {
return value;
}
public void setValue(int value) {
this.value = value;
notifyObservers();
}
public void attach(Observer observer) {
observers.add(observer);
}
public void detach(Observer observer) {
observers.remove(observer);
}
private void notifyObservers() {
for (Observer observer : observers) {
observer.update();
}
}
}
```
2.定义一个观察者接口,包含一个update方法。
```
public interface Observer {
void update();
}
```
3.定义一个观察者类,实现Observer接口,实现update方法。
```
public class ObserverImpl implements Observer {
private Observable observable;
public ObserverImpl(Observable observable) {
this.observable = observable;
observable.attach(this);
}
@Override
public void update() {
System.out.println("Value changed to " + observable.getValue());
}
}
```
4.在客户端代码中创建一个Observable对象和多个Observer对象,并关联它们。
```
public class Client {
public static void main(String[] args) {
Observable observable = new Observable();
Observer observer1 = new ObserverImpl(observable);
Observer observer2 = new ObserverImpl(observable);
Observer observer3 = new ObserverImpl(observable);
observable.setValue(1);
observable.setValue(2);
observable.setValue(3);
observable.detach(observer2);
observable.setValue(4);
observable.setValue(5);
}
}
```
在这个例子中,Observable类是被观察者,Observer接口和ObserverImpl类是观察者。客户端代码中创建了一个Observable对象和多个Observer对象,并将它们关联起来。当Observable对象的值发生改变时,所有关联的Observer对象都会接收到通知并调用自己的update方法。