您好,登录后才能下订单哦!
在Java中,创建Observer对象通常涉及到实现java.util.Observer
接口和java.util.Observable
类。但是,从Java 9开始,Observable
和Observer
已经被弃用,推荐使用新的观察者模式实现,即java.beans
包中的PropertyChangeListener
和PropertyChangeSupport
,或者使用第三方库如RxJava。
下面是使用Java内置的观察者模式的示例:
首先,创建一个实现了Observer
接口的类:
import java.util.Observer;
import java.util.Observable;
public class MyObserver implements Observer {
@Override
public void update(Observable o, Object arg) {
System.out.println("Observer: " + arg);
}
}
然后,创建一个继承了Observable
类的类:
import java.util.Observable;
public class MyObservable extends Observable {
public void doSomething() {
// ... 执行一些操作
// 通知观察者
setChanged();
notifyObservers("Hello, Observers!");
}
}
最后,在主程序中创建MyObservable
和MyObserver
对象,并将观察者添加到被观察者中:
public class Main {
public static void main(String[] args) {
MyObservable myObservable = new MyObservable();
MyObserver myObserver = new MyObserver();
// 将观察者添加到被观察者中
myObservable.addObserver(myObserver);
// 执行操作,触发观察者的update方法
myObservable.doSomething();
}
}
如果你使用的是Java 9或更高版本,可以考虑使用PropertyChangeListener
和PropertyChangeSupport
:
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class MyBean {
private final PropertyChangeSupport support;
public MyBean() {
support = new PropertyChangeSupport(this);
}
public void addPropertyChangeListener(PropertyChangeListener pcl) {
support.addPropertyChangeListener(pcl);
}
public void removePropertyChangeListener(PropertyChangeListener pcl) {
support.removePropertyChangeListener(pcl);
}
public void doSomething() {
// ... 执行一些操作
// 通知观察者
support.firePropertyChange("propertyName", oldValue, newValue);
}
}
在这个例子中,你需要实现PropertyChangeListener
接口来创建观察者对象:
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
public class MyPropertyChangeListener implements PropertyChangeListener {
@Override
public void propertyChange(PropertyChangeEvent evt) {
System.out.println("Property changed: " + evt.getPropertyName() + " from " + evt.getOldValue() + " to " + evt.getNewValue());
}
}
然后在主程序中创建MyBean
和MyPropertyChangeListener
对象,并将观察者添加到被观察者中:
public class Main {
public static void main(String[] args) {
MyBean myBean = new MyBean();
MyPropertyChangeListener myPropertyChangeListener = new MyPropertyChangeListener();
// 将观察者添加到被观察者中
myBean.addPropertyChangeListener(myPropertyChangeListener);
// 执行操作,触发观察者的propertyChange方法
myBean.doSomething();
}
}
如果你想要使用RxJava,可以参考RxJava的官方文档来了解如何创建和使用观察者对象。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。