监听器Listener(22.07.05)

监听器:是一个实现了特定接口的java程序 这个程序专门用于监听另一个对象的  方法调用  或  属性改变  或  对象的创建销毁,当被监听的对象发生了上述的事件  就会出发监听器的调用  也就是监听器的某个方法会被执行。

三个角色:

1.被监听的对象  也就是事件源:注册监听器  关联监听器  对象

2.被监听的对象身上发生了什么事  事件: 封装了事件源和动作

3.触发监听器的方法执行  监听器:doXXX(Event e)

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

/**
 * @author GuoShuo
 * @date 2022/7/4 20:04
 */
public class ListenerDemo2 {

    public static void main(String[] args) {
        //创建事件源

        Student student = new Student();
        student.setName("张三");

        student.addListener(new StudentListener() {
            @Override
            public void doSleep(Event e) {

                Student source = e.getSource();
                System.out.println(source.getName()+"受到了处罚");
            }
        });

        student.sleep();
    }

}

// 事件源
class Student{
    // 事件源 注册监听器
    private StudentListener studentListener;

    public void addListener(StudentListener studentListener){
        this.studentListener = studentListener;
    }


    private String name;

    public void eat(){
        System.out.println("吃午饭了");
    }
    public void sleep(){
        System.out.println(this.getName() + "在睡觉");
        studentListener.doSleep(new Event(this));
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

// 监听器
interface StudentListener{
    public void doSleep(Event e);
}


// 事件对象
class Event{
    // 通过 事件对象得到事件源

    private Student source;

    public Event() {
    }


    public Event(Student student) {
        this.source = student;
    }



    public Student getSource() {
        return source;
    }

    public void setSource(Student source) {
        this.source = source;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值