在Java中,要创建自定义Observer,您需要遵循以下步骤:
import java.util.Observable;
import java.util.Observer;
public class CustomObservable extends Observable {
private String message;
public void setMessage(String message) {
this.message = message;
setChanged(); // 标记为已更改,以便通知观察者
notifyObservers(); // 通知所有观察者
}
public String getMessage() {
return message;
}
}
在这个例子中,我们创建了一个名为CustomObservable
的类,它继承了Observable
类。我们添加了一个名为message
的私有成员变量,并提供了setMessage
和getMessage
方法来设置和获取消息。当setMessage
方法被调用时,我们使用setChanged()
方法标记为已更改,然后使用notifyObservers()
方法通知所有观察者。
public class CustomObserver implements Observer {
private String name;
public CustomObserver(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
CustomObservable customObservable = (CustomObservable) o;
System.out.println(name + "收到了新消息: " + customObservable.getMessage());
}
}
在这个例子中,我们创建了一个名为CustomObserver
的类,它实现了Observer
接口。我们为观察者提供了一个构造函数,用于设置观察者的名称。update
方法会在观察者收到新消息时被调用。在这个方法中,我们将Observable
对象强制转换为CustomObservable
类型,并打印出观察者的名称和新消息。
public class Main {
public static void main(String[] args) {
CustomObservable customObservable = new CustomObservable();
CustomObserver customObserver1 = new CustomObserver("观察者1");
CustomObserver customObserver2 = new CustomObserver("观察者2");
customObservable.addObserver(customObserver1);
customObservable.addObserver(customObserver2);
customObservable.setMessage("这是一个自定义消息");
}
}
在主类中,我们创建了CustomObservable
和两个CustomObserver
实例。我们将这两个观察者添加到CustomObservable
实例中,然后调用setMessage
方法发送一条新消息。这将导致所有观察者收到新消息并打印出相应的输出。
亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。