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; } }
原文地址:https://www.cnblogs.com/DonAndy/p/6476534.html