java监听者模式怎么实现

网友投稿 248 2023-12-26

在Java中实现观察者模式,需要定义两个角色:观察者(Observer)和被观察者(Subject)。观察者可以注册到被观察者,当被观察者状态发生变化时,观察者会收到通知并进行相应的处理。

以下是一个简单的示例代码,演示如何实现观察者模式:

import java.util.ArrayList; import java.util.List; // 观察者接口 interfaceObserver{ voidupdate(String message); } // 被观察者接口 interfaceSubject{ voidregisterObserver(Observer observer); voidremoveObserver(Observer observer); voidnotifyObservers(); } // 具体的观察者类 classConcreteObserverimplementsObserver{ private String name; publicConcreteObserver(String name){ this.name = name; } @Override publicvoidupdate(String message){ System.out.println(name + " received message: "+ message); } }// 具体的被观察者类 classConcreteSubjectimplementsSubject{ privateList<Observer> observers =new ArrayList<>(); private String message; @Override publicvoidregisterObserver(Observer observer){ observers.add(observer); } @Override publicvoidremoveObserver(Observer observer){ observers.remove(observer); }@Override publicvoidnotifyObservers(){ for(Observer observer : observers) { observer.update(message); } }publicvoidsetMessage(String message){ this.message = message; notifyObservers(); } } public classMain{ publicstaticvoidmain(String[] args){ ConcreteObserver observer1 = new ConcreteObserver("Observer 1"); ConcreteObserver observer2 = new ConcreteObserver("Observer 2"); ConcreteSubject subject = new ConcreteSubject(); subject.registerObserver(observer1); subject.registerObserver(observer2); subject.setMessage("Hello World!"); } }

在上述代码中,ConcreteObserver实现了Observer接口,并实现了update方法,用于接收被观察者的消息。ConcreteSubject实现了Subject接口,实现了注册观察者、移除观察者和通知观察者的方法。被观察者状态发生变化时,调用notifyObservers方法通知所有观察者。

在Main类中,创建了两个观察者observer1和observer2,以及一个被观察者subject。将观察者注册到被观察者后,调用setMessage方法改变被观察者的状态,观察者将收到相应的通知并输出消息。

以上就是一个简单实现观察者模式的示例代码,你可以根据自己的需求进行修改和扩展。

购买使用服务器,可以极大降低初创企业、中小企业以及个人开发者等用户群体的整体IT使用成本,无需亲自搭建基础设施、简化了运维和管理的日常工作量,使用户能够更专注于自身的业务发展和创新。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:linux怎么扩容磁盘分区
下一篇:docker容器挂载硬盘的方法是什么
相关文章

 发表评论

暂时没有评论,来抢沙发吧~