mysql实体监听器_监听器模式(Listener)
监听器模式有三个要素:
事件源:顾名思义,事件发生的源头,比如点击的按钮,可以工作可以运作的机器人,属于被监听的对象
事件对象:这个经常和事件源混淆,它经常被用来包装事件源,或者说执行某个方法,比如点击事件,机器人程序执行
监听器:这个是监听器模式的核心,定义事件发生后的动作,通常事件对象作为监听器中定义的函数入参
当事件源对象上发生操作时,将会调用时间监听的一个方法,并在调用方法的时候把事件对象传递过去
执行顺序:
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)相关推荐
- python监听器_监听器 - python成长中 - 博客园
监听器介绍 监听器 - Listener 监听器(Listener)是J2EE Servlet模块下的组件 Listener的作用对web应用对象的行为进行监控 通过Listener监听自动触发指定的 ...
- java web.xml 监听器_十:JavaWeb中的监听器(一)
2.1.基本概念 JavaWeb中的监听器是Servlet规范中定义的一种特殊类,它用于监听web应用程序中的ServletContext, HttpSession和 ServletRequest等域 ...
- java web.xml 监听器_【JAVA 核心技术】java web 中的监听器
为什么要有监听器? 监听器是用来处理一系列事件的java类,可被配置在java web项目中. 既然如此,为什么不用代码直接调用监听器? 这可能是因为J2EE规范规定的项目工程标准,用web.xml指 ...
- mysql 关闭严格_如何禁用MySQL严格模式?
默认情况下启用此功能,但是,你可以通过以下几种方式之一禁用它. 首先,验证MYSQL运行的模式:$ mysql -u root -p -e "SHOW VARIABLES LIKE 'sql ...
- java工作笔记021---Java设计模式_观察者模式_事件驱动模式
技术交流QQ群[JAVA,C,.NET,BigData,AI]:170933152 这个模式现在,觉得越来越有用了, 发现在一些springCloud项目中也有用的,一些前端,net, 后端java的 ...
- mysql %和正则_mysql 正则模式和like模糊查询
MySql like模糊查询使用详解 一.SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的 ...
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...
- 监听器和监听器过滤器常见应用GUl中理解
实现一个监听器的接口:(有N种) 1.编写一个监听器 实现监听器的接口 //统计网上在线人数:统计Session public class olinejqt implements HttpSessio ...
- solr mysql 全文搜索_全文检索Solr集成HanLP中文分词
以前发布过 HanLP 的 Lucene插件,后来很多人跟我说其实Solr更流行(反正我是觉得既然Solr是Lucene的子项目,那么稍微改改配置就能支持Solr),于是就抽空做了个Solr插件出来, ...
- java web监听器_JavaWeb监听器
三大组件: Servlet Listener Filter Listener:监听器 * 它是一个接口,内容由我们来实现: * 它需要注册,例如注册在按钮上! * 监听器中的方法,会在特殊事件发生时被 ...
最新文章
- android自带蓝牙例子详解
- POS消费机C#例子代码
- P1450 [HAOI2008]硬币购物
- WinQSB的19个子系统简介
- python matplotlib.pyplot报错tk_@邹博,python 中 import matplotlib.pyplot 会报Keyerror 'qt5' 的错...
- 傻瓜式Git提交代码流程【写给初学者】
- 一起学英语 | 用JavaScript实现数字阶乘的三种方法
- poi设置excel表格边框
- 3 Layer and 3 Tier
- 阿里小蜜技术学习笔记--知识点整理
- 软工网络15团队作业9——项目验收与总结
- V4C3-MXene 二维V4C3Tx迈科烯(MXene),胶体溶剂分散液 ,风琴状多层材料 ,冻干粉末
- 电脑右下角图标不显示
- 联想服务器bios查看网卡信息,如何通过BIOS检查确认硬盘信息可被正常识别
- linux改变群组的命令,linux改变文件群组命令
- 基于Java毕业设计学生公寓管理系统源码+系统+mysql+lw文档+部署软件
- 修改Win7下计算器为默认16进制
- 基于springboot的养生美食菜谱食谱小程序毕设选题推荐
- H.264/AVC 片——slice
- Neo4j CEO Emil Eifrem 解读图数据平台引领数据库未来十年的发展
热门文章
- 南京邮电大学电工电子基础B实验二(电气参数测量和伏安特性)
- C语言程序设计中十全十美,21世纪高校计算机应用技术系列规划教材 C语言程序设计-潭浩强主编 林小茶编著.pdf...
- MTK平台各种分区和bin/img(线刷包)对应关系和作用说明
- 化妆品行业组合解决方案
- 九九乘法表php4种,PHP九九乘法表
- Un*、Id分别突变情况下单闭环直流调速系统仿真
- python秒网课_利用python完成大学刷课(从0到完成的思路)
- c++ GUI轻量工具包FLTK介绍 (1)
- java坦克大战项目
- python知识图谱关系抽取算法_知识图谱关系抽取之PCNN——tensorflow实现