首页 > 编程语言 >Java监听器实现原理

Java监听器实现原理

时间:2023-01-06 13:32:26浏览次数:39  
标签:Java void public 监听器 原理 Developer Event developer


文章目录

  • ​​监听器模型​​
  • ​​案例实现​​
  • ​​`DeveloperListener`​​
  • ​​`Developer`​​
  • ​​`Event`​​
  • ​​`DeveloperListenerImpl`​​
  • ​​测试​​

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

监听器模型

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

Java监听器实现原理_System

案例实现

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

​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,void,public,监听器,原理,Developer,Event,developer
From: https://blog.51cto.com/u_15932195/5993035

相关文章

  • Day10:学习基础java方法
    方法何谓方法?System.out.println(),那么它是什么呢?Java方法是语句的集合,它们在一起执行一个功能。方法是解决一类问题的步骤的有序组合方法包含于类或对象中方法......
  • (一)Java入门
    java入门1、java跨平台原理:JVM(java虚拟机)2、JRE:包括JVM和运行所要的核心类库JDK:编译工具javac.exe运行工具java.exe(在bin目录下)3、常用DOS命令(1)dir:显示目录(2)cd......
  • Java volatile
    JMM:Java内存模型要想学习volatile,就不得不了解JMM。JVM运行程序的实体是线程,每个线程在被创建时JVM都会为其创建一个自己私有的工作内存。而Java内存模型规定所有的变......
  • Java并发容器之LinkedBlockingQueue源码分析
    一、简介LinkedBlockingQueue是java并发包下一个以单链表实现的阻塞队列,它是线程安全的,至于它是不是有界的,请看下面的分析。二、源码分析2.1属性 //容量private......
  • Java的四种引用方式
    java内存管理分为内存分配和内存回收,都不需要程序员负责,垃圾回收的机制主要是看对象是否有引用指向该对象。java对象的引用包括  强引用,软引用,弱引用,虚引用Java中提供......
  • 2023.1.06 java打印杨辉三角(二维数组)
    publicclassyanghui{publicstaticvoidmain(String[]args){int[][]yanghui=newint[10][];for(inti=0;i<yanghui.length;i++){......
  • [JavaScript]分解url参数
    分解页面url传入参数转载:来自https://www.jianshu.com/p/6dd040f6800dfunctioninit_params(){varurl=location.search;//获取url中"?"符后的字串......
  • 『中级篇』docker之CI/CD持续集成—真实JAVA-Maven项目的CI演示(73)
    ICD。项目通过gitlab和gitlabCI进行CICD。源码地址:​​​https://github.com/limingios/gitlabci-maven​​​源码:​​https://github.com/limingios/docker/tree/master/......
  • 写过vue自定义指令吗,原理是什么?.m
    背景看了一些自定义指令的文章,但是探究其原理的文章却不多见,所以我决定水一篇。如何自定义指令?其实关于这个问题官方文档上已经有了很好的示例的,我们先来温故一下。除......
  • opencv卡尺测量原理
    遍历每个矩形区域,分别找到一个灰度突变的峰值,然后把这N个点剔除问题点拟合直线或圆。可以通过卡尺检测边缘,再用投影法,再求灰度平均值沿着边缘检测方向,垂直扫描图像如图......