轻松掌握Java观察者模式
程序员文章站
2024-03-13 13:02:15
定义:当对象间存在一对多关系时,则使用观察者模式(observer pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。
特点:
&nb...
定义:当对象间存在一对多关系时,则使用观察者模式(observer pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。
特点:
1、观察者和被观察者是抽象耦合的。
2、建立一套触发机制。
企业级开发和常用框架中的应用:java自带观察者类,servlet中的filter,分布式的消息队列
实例:
public class demo { public static void main(string[] args) { actualsubject subject = new actualsubject(); observera o1 = new observera(); observera o2 = new observera(); observera o3 = new observera(); //订阅消息 subject.addobserver(o1); subject.addobserver(o2); subject.addobserver(o3); subject.setnews("今天天气真好"); } } /** * 观察者接口 */ interface observer{ public void update(subject subject); } /** * 目标对象,广播对象 */ class subject{ private list<observer> list = new arraylist<>(); public void addobserver(observer o){ list.add(o); } public void removeobserver(observer o){ list.remove(o); } public void notifyallobserver(){ for(observer o:list){ o.update(this); } } } class actualsubject extends subject{ private string news; public void setnews(string news) { this.news = news; system.out.println("我是广播,我发出了一个消息"); notifyallobserver(); } public string getnews() { return news; } } class observera implements observer{ private string news; public void update(subject subject) { setnews(((actualsubject)subject).getnews()); system.out.println("我是观察者,我接收到一个我订阅的广播发出的消息,接下来我要做出响应的操作"); system.out.println(getnews()); } public string getnews() { return news; } public void setnews(string news) { this.news = news; } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: thinkPHP5.0框架安装教程
下一篇: 浅谈fastjson的常用使用方法