事件监听器原理——事件对象、事件监听器、事件源

package cn.my.demo;

//设计一个监听器
public class Demo2 {
    public static void main(String[] args) {
        Person p=new Person(1001,"张三");
        p.refisterListener(new PersonListener() {
            public void dorun(Event e) {
                Person p=e.getSource();
                System.out.println("Who is in front of people to have a meal, that is "+p.getName());
            }

            public void doeat(Event e) {
                Person p=e.getSource();
                System.out.println("Who in the previous run, that is "+p.getName());
            }
        });

        p.eat();
        p.run();
    }
}
//观察者设计模式
class Person{
    private Integer id ;
    private String name;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }

    public Person(Integer id ,String name)
    {
        this.id=id;
        this.name=name;
    }
    //这个就是一个事件源
    private PersonListener listener;
    public void eat(){
        if(listener!=null){
            listener.doeat(new Event(this));
        }

        System.out.println("this is eat!");
    }
    public void run(){
        if(listener!=null){
            listener.dorun(new Event(this));
        }

        System.out.println("this is run!");
    }
    public void refisterListener(PersonListener listener){
        this.listener=listener;
    }
}

//事件监听器
interface PersonListener{
    public void doeat(Event e);
    public void dorun(Event e);
}

//这个是事件对象
class Event{
    //事件对象   需要封装事件源对象
    private Person source;

    public Person getSource() {
        return source;
    }
    public Event(Person source) {
        super();
        this.source = source;
    }
    public Event() {
        super();
    }
    public void setSource(Person source) {
        this.source = source;
    }
}
时间: 2024-11-04 22:29:15

事件监听器原理——事件对象、事件监听器、事件源的相关文章

[ javascript html Dom image 对象事件加载方式 ] 对象事件加载方式

1 <!DOCTYPE html> 2 <html lang='zh-cn'> 3 <head> 4 <title>Insert you title</title> 5 <meta name='description' content='this is my page'> 6 <meta name='keywords' content='keyword1,keyword2,keyword3'> 7 <meta htt

对象感知监听器

与session中绑定的对象相关. 1.session的绑定与解绑: (1)创建Person类,实现HttpSessionBindingListener 接口,用来监听session对象的绑定与解绑. package pers.zhb.domain; import javax.servlet.http.HttpSessionBindingEvent; import javax.servlet.http.HttpSessionBindingListener; public class Studen

JS DOM基础 事件概述 事件流 事件处理方法 添加监听器 事件类型 事件对象 事件委托

一.事件概述 事件是什么? 在我们的生活中,都会接触到事件这样一个概念,它通常通过描述发生这件事的时间.地点.人物,发生了什么来进行概括. 同样的在javascript也有这样的一个的东西------事件. 页面上发生的事件:鼠标移动.点击.滚动等等. 事件描述了页面上发生的事情,通常它有以下三个要素组成: 事件源:触发事件的元素 事件类型:事件的触发方式(例如鼠标点击或键盘点击) 事件处理程序(事件监听器):事件触发后要执行的代码(函数形式) Javascript 使我们可以动态的去操作一个页

[原创]java WEB学习笔记48:其他的Servlet 监听器:域对象中属性的变更的事件监听器 (3 个),感知 Session 绑定的事件监听器(2个)

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------

JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)

1.事件冒泡与事件捕获 2.事件与事件句柄 3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处: 1.每个函数都是对象,都会占用内存,内存中对象越多,性能越差. 2.必须事先指定所有事件处理程序而导致的DOM访问次数,会延迟整个页面的交互就绪时间. 怎样处理由于事件较多引起的性能差: 1.采用事件委托技术,限制简历的连接数量 2.在不需要的时候移除事件处理程序 例子: html: <div id="myDiv&

Node.js自定义对象事件监听与发射

一.Node.js是以事件驱动的,那我们自定义的一些js对象就需要能监听事件以及发射事件.在Node.js中事件使用一个EventEmitter对象发出,该对象在events模块中.它应该是使用观察者设计模式来实现把事件监听器添加到对象以及移除,之前写OC那块的时候也有些观察者设计模式,在OC中也经常用到:通知中心.KVO,也很容易理解. .addListener(eventName,callback):将回调函数附加到对象的监听器中.当eventName的事件被触发时,回调函数被放置在事件队列

剖析Qt的事件机制原理

版权声明 请尊重原创作品.转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正. QT源码解析(一) QT创建窗口程序.消息循环和WinMain函数 QT源码解析(二)深入剖析QT元对象系统和信号槽机制 QT源码解析(三)深入剖析QT元对象系统和信号槽机制(续) QT源码解析(四)剖析Qt的事件机制原理 QT源码解析(五)QLibrary跨平台调用动态库的实现 QT源码解析(六)Qt信号槽机制与事件机制的联系 QT源码解析(七)Qt创建窗

JavaScript之DOM-8 Event对象(事件概述、事件处理、event对象)

一.事件概述 事件概述 - 当用户与 Web 页面进行某些交互时,解释器就会创建相应的event对象以描述事件信息.常见的事件有: - 用户点击页面上的某项内容 - 鼠标经过特定的元素 - 用户按下键盘上的某个按键 - 用户滚动窗口或改变窗口大小 - 页面元素加载完成或加载失败 - ... - 1995年 IE4 浏览器就已经定义了自己的事件模型,而DOM模型2004年才最终确定标准的事件模型,并被其它浏览器所支持.所以事件处理需要注意兼容性问题 事件句柄 - 事件句柄(又称事件处理函数.事件监

JavaScript事件委托原理及Jquery中的事件委托

概念 事件委托,通俗来说就是将元素的事件委托给它的父级或者更外级元素处理. 事件流 事件流描述的是从页面中接收事件的顺序. 事件冒泡:事件开始由最具体的元素接收,然后逐级向上传播到较为不具体的节点(或文档). 事件捕获:事件开始由不太具体的节点接收,然后逐级向下传播到最具体的节点.它与事件冒泡是个相反的过程. DOM2级事件规定的事件流包括三个阶段: 事件捕获 目标阶段 事件冒泡 原理 事件委托就是利用事件冒泡机制实现的. 假设有一个列表,要求点击列表项弹出对应字段. <ul id="my