zoukankan      html  css  js  c++  java
  • java监听器

    监听器:监听器就是一个实现了特定接口的普通java程序。这个程序专门用来监听另一个java对象的方法调用或者属性改变,当被监听的对象发生上述的事件后,监听器的某个方法就立即被执行。

    监听器的事件监听机制:

    1:事件监听涉及三个:事件源,事件对象 ,事件监听器

    2:当事件源发生某一个动作的时候,他会调用事件监听器的一个方法,并在调用该方法的时候把事件对象传递进去,开发人员在监听器中通过事件对象就可以拿到事件源,从而对事件源进行操作。

    设计一个事件源,被监听器监听, Observer(观察者设计模式)

    package com.hytc.hyb;
    
    public class ListenerDemo2 {
    
        public static void main(String[] args) {
    
            Person p = new Person();
            p.setName("hahaha");
            p.registerListener(new PersonListener() {
    
                @Override
                public void dorun(Event e) {
                    Person p = e.getSource();
                    System.out.println(p.getName() + "跑步");
    
                }
    
                @Override
                public void doeat(Event e) {
                    Person p = e.getSource();
                    System.out.println(p + "吃饭");
    
                }
            });
            p.eat();
        }
    
    }
    
    // 设计一个事件源
    class Person {
        private String name = "hyb";
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        private PersonListener listener;
    
        @Override
        public String toString() {
            return this.getName();
        }
    //注册监听器,绑定监听器
        public void registerListener(PersonListener listener) {
            this.listener = listener;
        }
    //调用监听器的方法
        public void eat() {
            if (listener != null) {
                listener.doeat(new Event(this));
            }
        }
    
        public void run() {
            if (listener != null) {
                listener.dorun(new Event(this));
            }
        }
    
    }
    

    //监听器接口 绑定事件源对象
    interface PersonListener { public void doeat(Event e); public void dorun(Event e); } // 事件源对象 class Event { private Person source; public Event() { super(); } public Event(Person source) { super(); this.source = source; } public Person getSource() { return source; } public void setSource(Person source) { this.source = source; } }
  • 相关阅读:
    面试十题(4)
    TS中给接口指定的成员?
    TS中定义泛型接口的两种方式
    ts中泛型的使用
    ts中类的属性的封装
    ts中接口的使用
    自定义hook的步骤
    react中如何使用useReducer?
    react中useContext的使用
    react 中useRef的作用
  • 原文地址:https://www.cnblogs.com/DonAndy/p/6476534.html
Copyright © 2011-2022 走看看