温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何在 Java 中创建自定义 Observer

发布时间:2025-01-22 19:06:35 阅读:96 作者:小樊 栏目:编程语言
亿速云云数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>

在Java中,要创建自定义Observer,您需要遵循以下步骤:

  1. 导入必要的库:
import java.util.Observable;
import java.util.Observer;
  1. 创建一个自定义的Observable类:
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的私有成员变量,并提供了setMessagegetMessage方法来设置和获取消息。当setMessage方法被调用时,我们使用setChanged()方法标记为已更改,然后使用notifyObservers()方法通知所有观察者。

  1. 创建一个自定义的Observer类:
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类型,并打印出观察者的名称和新消息。

  1. 在主类中使用自定义的Observer和Observable:
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倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×