java 事件监听器

原创
07/12 12:40
阅读数 50
package com.qimh.springbootfiledemo.listener;

/**
 * 事件监听器
 * 监听person 事件源的eat 和 sleep 的方法
 * @author
 */
public interface PersonListener {
    void doEat(Event Event);
    void doSleep(Event Event);
}


/**
 * 事件对象
 * 事件对象封装了事件源
 * 在监听器上能通过事件对象获取得事件源
 */
class Event{

    private Person person;

    public Event(){

    }
    public Event(Person person){
        this.person = person;
    }

    public Person getResource(){
        return this.person;
    }

}



/**
 * 事件源Person
 * 事件源要提供方法注册监听器(即在事件源上关联监听器对象)
 */
class Person{

    /**
     *  定义一个监听器对象
     */
    private PersonListener personListener;

    public void eat(){
        //当事件源调用了eat方法时,应该触发监听器的方法,调用监听器的方法并把事件对象传进去
        personListener.doEat(new Event(this));
    }


    public void sleep(){
        personListener.doSleep(new Event(this));
    }

    public void registerListener(PersonListener personListener){
        this.personListener = personListener;
    }



    public static void main(String[] args){
        Person person = new Person();

        //注册监听器
        person.registerListener(new PersonListener() {
            @Override
            public void doEat(Event event) {
                Person person1 = event.getResource();
                System.out.println(person + " " + "正在吃饭");
            }

            @Override
            public void doSleep(Event event) {
                Person person1 = event.getResource();
                System.out.println(person + " " + "正在睡觉");
            }
        });

        person.eat();
    }
}

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部