如何实现Java监听器详解

一、前言

监听器就是监听事件源是否发生了某一个事件,当发生指定监听的事件时事件源会向已注册的监听器发送消息对象。监听器可以获得事件对象进行相关操作。

二、监听器模型

  • 事件源: 发生事件的对象
  • 消息:触发监听的某一个事件
  • 监听器:监听发生的某个事件进行业务处理

三、案例实现

在开发者进行开发和学习之前进行监听处理业务逻辑。

DeveloperListener

package demo.listener;

/**
 * 监听器接口
 * dingwen
 * 2021/5/30 14:35
 **/
public interface DeveloperListener {
    /**
     * 工作
     *
     * @param event 事件
     */
    void work(Event event);

    /**
     * 研究
     *
     * @param event 事件
     */
    void study(Event event);
}

Developer

package demo.listener;

import java.util.Optional;
import java.util.function.Supplier;

/**
 * 开发者类
 * dingwen
 * 2021/5/30 14:34
 **/
public class Developer {
    private DeveloperListener developerListener;

    /**
     * 注册监听器
     *
     * @param developerListener 开发人员监听器
     */
    public void registerListener(DeveloperListener developerListener) {
        this.developerListener = developerListener;
    }

    /**
     * 工作
     */
    public void work() {
        if (developerListener != null) {
            this.developerListener.work(new Event(this));
        }
        System.out.println("developer work");
    }

    /**
     * 研究
     */
    public void study(){
        if (developerListener != null){
            this.developerListener.study(new Event(this));
            System.out.println("developer study");
        }
    }
}

Event

package demo.listener;

/**
 * 事件对象
 * dingwen
 * 2021/5/30 14:32
 **/
public class Event {
    /**
     * 开发人员
     */
    private Developer developer;

    public Event(Developer developer) {
        this.developer = developer;
    }

    public Event() {
    }

    public Developer getDeveloper() {
        return developer;
    }

    public void setDeveloper(Developer developer) {
        this.developer = developer;
    }
}

DeveloperListenerImpl

package demo.listener;

/**
 * developer listener impl
 * dingwen
 * 2021/5/30 14:38
 **/
public class DeveloperListenerImpl implements DeveloperListener {
    @Override
    public void work(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("work developer impl listener");

    }

    @Override
    public void study(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("study developer impl listener");

    }
}

四、测试

package demo.listener;

/**
 * 测试
 * dingwen
 * 2021/5/30 14:57
 **/
public class ListenerTest {
    public static void main(String[] args) {
        Developer developer = new Developer();
        developer.registerListener(new DeveloperListenerImpl());
        developer.study();
        developer.work();
    }
}

到此这篇关于如何实现Java监听器详解的文章就介绍到这了,更多相关Java监听器内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java使用自定义注解实现为事件源绑定事件监听器操作示例

    本文实例讲述了Java使用自定义注解实现为事件源绑定事件监听器操作.分享给大家供大家参考,具体如下: 一 定义注解 import java.lang.annotation.*; import java.awt.event.*; @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) public @interface ActionListenerFor { // 定义一个成员变量,用于设置元数据 // 该listener成员变

  • Javaweb监听器实例之统计在线人数

    本文实例为大家分享了Javaweb统计在线人数示的具体代码,供大家参考,具体内容如下 1. 实现功能 统计在线人数 显示每个人的sessionId.Ip.第一次登录时间 2. 运用监听器种类 HttpSession ServletRequest 3. 实现思想 每一个用户对应着一个session,所以在每次session被创建时,num++: 实现一个用户类(sessionID.IP.Date) 获取IP地址的方法需要用request,所以我们要实现一个ServletRequest监听器 每一次

  • java-RGB调色面板的实现(事件监听器之匿名内部类)

    题目要求: 要求写一个案例,使用三个JSlider分别选取R.G.B三原色的值,用户可以通过活动JSlider的滑块来动态的合成一种颜色,合成的颜色显示在界面上. 代码思路解析: 1.所需要的组件 (1)JFrame窗口  (2)JLabel的RGB标签文字组件  (3)JTextField颜色变动的数值  (4)JSlider颜色交换的滑块组件  (5)JTextArea颜色显示区域 2.构造方法中将JFrame.JSlider.JTextField.JTextArea组件全部实例化 3.另写

  • java中接口和事件监听器的深入理解

    一:接口 接口在我们生活中无处不在,通过一个usb接口,我们可以通过u盘传输数据,这个接口是被定义过的,只有指定的类型能够使用这个接口,且通过这个接口我们传输的数据不会被破坏. 而在java中接口作用类似,定义一个具有特定特点的接口,在合适的地方引用它,执行所对应的功能,这样能够实现代码的分离. 下面我们来看一下接口的定义: 关键字:interface    格式:public interface 接口名{ } 接口的属性: [public static final]属性类型 属性名=属性值:

  • Java设计模式之监听器模式实例详解

    本文实例讲述了Java设计模式之监听器模式.分享给大家供大家参考,具体如下: 监听器模式有三个要素--事件源.事件对象.监听器. 事件源:顾名思义,事件发生的源头,比如点击的按钮,属于被监听的对象: 事件对象:这个经常和事件源混淆,它经常被用来包装事件源,切记,它毕竟是个事件,比如点击事件,和事件源的区别自己感受,木有栗子: 监听器:这个是监听器模式的核心,定义事件发生后的动作,通常事件对象作为监听器中定义的函数入参. 下面举个简单的栗子: 故事背景是,小明是个不讲卫生的孩子,他妈妈很担心他的健

  • Java监听器三种实现方法代码解析

    这是没有缩减的写法 //创建一个自定义监听器 private btnlistener btnl = new btnlistener(); //必须在一个btn创建后才添加监听器,即在类里面无法添加但构造函数可以 btn.addActionListener(btnl); //自定义监听器的内容 private class btnlistener implements ActionListener { @Override //实现接口(interface) public void actionPer

  • 聊聊java 过滤器、监听器、拦截器的区别(终结篇)

    过滤器.监听器.拦截器概念 概念 1.servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性, 可以动态生成web页面它工作在客户端请求与服务器响应的中间层: 2.filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求,响应和头信息. 它不能产生一个请求或者响应,它只是修改对某一资源的请求或者响应: 3.listener:监听器,通过listener可以坚挺web服务器中某一执行动作,并根据其要求作出相应的响应. 就是在applica

  • Java基于servlet监听器实现在线人数监控功能的方法

    本文实例讲述了Java基于servlet监听器实现在线人数监控功能的方法.分享给大家供大家参考,具体如下: 1.分析: 做一个网站在线人数统计,可以通过ServletContextListener监听,当Web应用上下文启动时,在ServletContext中添加一个List.用来准备存放在线的用户名,然后通过HttpSessionAttributeListener监听,当用户登录成功,把用户名设置到Session中.同时将用户名方法到ServletContext的List中,最后通过HttpS

  • 基于java servlet过滤器和监听器(详解)

    1 过滤器 1.过滤器是什么? servlet规范当中定义的一种特殊的组件,用于拦截容器的调用. 注:容器收到请求之后,如果有过滤器,会先调用过滤器,然后在调用servlet. 2.如何写一个过滤器? 1.写一个java类,实现Filter接口; 2.在接口方法中实现拦截方法; 3.配置过滤器(web.xml); 3.配置初始化参数 1.配置初始化参数.(init-param) 2.通过filterconfig提供的getinitparamenter方法读取初始化的值. 4.优先级: 当有多个过

  • Java Web监听器Listener接口原理及用法实例

    监听器主要针对三个对象 ServletContext HttpSession ServletRequest 使用方式 创建*Listener接口的实现类 在web.xml中注册该类 在同时注册多个同接口的监听器时,执行顺序参照web.xml中的注册顺序 监听器监听类型 对象的创建和销毁 对象属性的添加.替换.移除 创建实现类 // 用于监听session创建和销毁的监听器 package listener; import javax.servlet.http.HttpSessionEvent;

随机推荐