监听器模式有三个要素:

事件源:顾名思义,事件发生的源头,比如点击的按钮,可以工作可以运作的机器人,属于被监听的对象

事件对象:这个经常和事件源混淆,它经常被用来包装事件源,或者说执行某个方法,比如点击事件,机器人程序执行

监听器:这个是监听器模式的核心,定义事件发生后的动作,通常事件对象作为监听器中定义的函数入参

当事件源对象上发生操作时,将会调用时间监听的一个方法,并在调用方法的时候把事件对象传递过去

执行顺序:

1.给事件源注册监听器

2.组件接受外部作用,也就是事件触发

3.组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器

4.事件处理器启动,并执行相关代码来处理事件

监听器模式:事件源注册监听器后,当事件源触发事件,监听器就可以回调事件对象的方法;

更加形象地说,监听者模式就是基于:注册-回调事件/消息通知处理模式,就是被监听者将消息通知给所有监控者

1.注册监听器:事件源.setListener

2.回调:事件源实现onListener

/**

* 事件源:机器人

*/

public class Robot{

private RobotListener listener;

/**

* 注册机器人监听器

* @param listener

*/

public void registerListener(RobotListener listener){

this.listener = listener;

}

/**

* 工作

*

*/

public void working() {

if (listener != null){

Even even = new Even(this);

this.listener.working(even);

}

System.out.println("robot 开始 工作.......");

}

/**

* 跳舞

*

*/

public void dancing() {

if (listener != null){

Even even = new Even(this);

this.listener.dancing(even);

}

System.out.println("robot 开始 跳舞.......");

}

}

/**

* 监听器接口

*/

public interface RobotListener {

/**

* 工作

* @param even

*/

void working(Even even);

/**

* 跳舞

* @param even

*/

void dancing(Even even);

}

public class MyRobotListener implements RobotListener {

/**

* 工作

*

* @param even

*/

@Override

public void working(Even even) {

Robot robot = even.getRobot();

System.out.println("机器人开始工作,防止偷窥.....");

}

/**

* 跳舞

*

* @param even

*/

@Override

public void dancing(Even even) {

Robot robot = even.getRobot();

System.out.println("机器人开始跳舞,防止走神.....");

}

}

/**

* 事件对象

*/

public class Even {

private Robot robot;

public Even() {

super();

}

public Even(Robot robot) {

super();

this.robot = robot;

}

public Robot getRobot(){

return robot;

}

public void setRobot(Robot robot) {

this.robot = robot;

}

}

public class TestListener {

public static void main(String[] args) {

Robot robot = new Robot();

robot.registerListener(new MyRobotListener());

robot.working();

robot.dancing();

}

}

or

/**

* 监听器接口

*/

public interface EventListener extends java.util.EventListener {

/**

* 事件处理

* @param eventObject

*/

void handleEvent(EventObject eventObject);

}

/**

* 事件对象

*/

public class EventObject extends java.util.EventObject {

public EventObject(Object source) {

super(source);

}

public void doEvent(){

System.out.println("通知一个事件源 source:"+this.getSource());

}

}

/**

* 事件源

*/

public class EventSource {

// 监听器列表,

private List listeners = new ArrayList();

public void addListener(EventListener listener){

listeners.add(listener);

}

public void removeListener(EventListener listener){

listeners.remove(listener);

}

public void notifyListenerEvent(EventObject eventObject){

listeners.forEach(x->{

x.handleEvent(eventObject);

});

}

}

测试执行

public class EventDome {

public static void main(String[] args) {

EventSource eventSource = new EventSource();//事件源

eventSource.addListener(eventObject -> {

eventObject.doEvent();

if (eventObject.getSource().equals("closeWindow")) {

System.out.println("doClose。。。。。"); //回调

}

});

EventObject eventObject = new EventObject("closeWindow"); // 事件对象

eventSource.notifyListenerEvent(eventObject); // 触发事件

}

}

通知一个事件源 source:closeWindow

doClose。。。。。

EventListener是一个回调接口类,handleEvent是一个回调函数接口

mysql实体监听器_监听器模式(Listener)相关推荐

  1. python监听器_监听器 - python成长中 - 博客园

    监听器介绍 监听器 - Listener 监听器(Listener)是J2EE Servlet模块下的组件 Listener的作用对web应用对象的行为进行监控 通过Listener监听自动触发指定的 ...

  2. java web.xml 监听器_十:JavaWeb中的监听器(一)

    2.1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域 ...

  3. java web.xml 监听器_【JAVA 核心技术】java web 中的监听器

    为什么要有监听器? 监听器是用来处理一系列事件的java类,可被配置在java web项目中. 既然如此,为什么不用代码直接调用监听器? 这可能是因为J2EE规范规定的项目工程标准,用web.xml指 ...

  4. mysql 关闭严格_如何禁用MySQL严格模式?

    默认情况下启用此功能,但是,你可以通过以下几种方式之一禁用它. 首先,验证MYSQL运行的模式:$ mysql -u root -p -e "SHOW VARIABLES LIKE 'sql ...

  5. java工作笔记021---Java设计模式_观察者模式_事件驱动模式

    技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 这个模式现在,觉得越来越有用了, 发现在一些springCloud项目中也有用的,一些前端,net, 后端java的 ...

  6. mysql %和正则_mysql 正则模式和like模糊查询

    MySql like模糊查询使用详解 一.SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的 ...

  7. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  8. 监听器和监听器过滤器常见应用GUl中理解

    实现一个监听器的接口:(有N种) 1.编写一个监听器 实现监听器的接口 //统计网上在线人数:统计Session public class olinejqt implements HttpSessio ...

  9. solr mysql 全文搜索_全文检索Solr集成HanLP中文分词

    以前发布过 HanLP 的 Lucene插件,后来很多人跟我说其实Solr更流行(反正我是觉得既然Solr是Lucene的子项目,那么稍微改改配置就能支持Solr),于是就抽空做了个Solr插件出来, ...

  10. java web监听器_JavaWeb监听器

    三大组件: Servlet Listener Filter Listener:监听器 * 它是一个接口,内容由我们来实现: * 它需要注册,例如注册在按钮上! * 监听器中的方法,会在特殊事件发生时被 ...

最新文章

  1. android自带蓝牙例子详解
  2. POS消费机C#例子代码
  3. P1450 [HAOI2008]硬币购物
  4. WinQSB的19个子系统简介
  5. python matplotlib.pyplot报错tk_@邹博,python 中 import matplotlib.pyplot 会报Keyerror 'qt5' 的错...
  6. 傻瓜式Git提交代码流程【写给初学者】
  7. 一起学英语 | 用JavaScript实现数字阶乘的三种方法
  8. poi设置excel表格边框
  9. 3 Layer and 3 Tier
  10. 阿里小蜜技术学习笔记--知识点整理
  11. 软工网络15团队作业9——项目验收与总结
  12. V4C3-MXene 二维V4C3Tx迈科烯(MXene),胶体溶剂分散液 ,风琴状多层材料 ,冻干粉末
  13. 电脑右下角图标不显示
  14. 联想服务器bios查看网卡信息,如何通过BIOS检查确认硬盘信息可被正常识别
  15. linux改变群组的命令,linux改变文件群组命令
  16. 基于Java毕业设计学生公寓管理系统源码+系统+mysql+lw文档+部署软件
  17. 修改Win7下计算器为默认16进制
  18. 基于springboot的养生美食菜谱食谱小程序毕设选题推荐
  19. H.264/AVC 片——slice
  20. Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展

热门文章

  1. 南京邮电大学电工电子基础B实验二(电气参数测量和伏安特性)
  2. C语言程序设计中十全十美,21世纪高校计算机应用技术系列规划教材 C语言程序设计-潭浩强主编 林小茶编著.pdf...
  3. MTK平台各种分区和bin/img(线刷包)对应关系和作用说明
  4. 化妆品行业组合解决方案
  5. 九九乘法表php4种,PHP九九乘法表
  6. Un*、Id分别突变情况下单闭环直流调速系统仿真
  7. python秒网课_利用python完成大学刷课(从0到完成的思路)
  8. c++ GUI轻量工具包FLTK介绍 (1)
  9. java坦克大战项目
  10. python知识图谱关系抽取算法_知识图谱关系抽取之PCNN——tensorflow实现