Java监听器实现原理

监听器就是监听事件源是否发生了某一个事件,当发生指定监听的事件时事件源会向已注册的监听器发送消息对象。监听器可以获得事件对象进行相关操作。

监听器模型

  • 事件源: 发生事件的对象
  • 消息:触发监听的某一个事件
  • 监听器:监听发生的某个事件进行业务处理

在这里插入图片描述

案例实现

在开发者进行开发和学习之前进行监听处理业务逻辑。

DeveloperListener

package demo.listener;

/**
 * 监听器接口
 * dingwen
 * 2021/5/30 14:35
 **/
public interface DeveloperListener {
    /**
     * 工作
     *
     * @param event 事件
     */
    void work(Event event);

    /**
     * 研究
     *
     * @param event 事件
     */
    void study(Event event);
}

Developer

package demo.listener;

import java.util.Optional;
import java.util.function.Supplier;

/**
 * 开发者类
 * dingwen
 * 2021/5/30 14:34
 **/
public class Developer {
    private DeveloperListener developerListener;


    /**
     * 注册监听器
     *
     * @param developerListener 开发人员监听器
     */
    public void registerListener(DeveloperListener developerListener) {
        this.developerListener = developerListener;
    }

    /**
     * 工作
     */
    public void work() {
        if (developerListener != null) {
            this.developerListener.work(new Event(this));
        }
        System.out.println("developer work");
    }


    /**
     * 研究
     */
    public void study(){
        if (developerListener != null){
            this.developerListener.study(new Event(this));
            System.out.println("developer study");
        }
    }
}

Event

package demo.listener;

/**
 * 事件对象
 * dingwen
 * 2021/5/30 14:32
 **/
public class Event {
    /**
     * 开发人员
     */
    private Developer developer;

    public Event(Developer developer) {
        this.developer = developer;
    }

    public Event() {
    }

    public Developer getDeveloper() {
        return developer;
    }

    public void setDeveloper(Developer developer) {
        this.developer = developer;
    }
}

DeveloperListenerImpl

package demo.listener;

/**
 * developer listener impl
 * dingwen
 * 2021/5/30 14:38
 **/
public class DeveloperListenerImpl implements DeveloperListener {
    @Override
    public void work(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("work developer impl listener");

    }

    @Override
    public void study(Event event) {
        Developer developer = event.getDeveloper();
        System.out.println("study developer impl listener");

    }
}

测试

package demo.listener;

/**
 * 测试
 * dingwen
 * 2021/5/30 14:57
 **/
public class ListenerTest {
    public static void main(String[] args) {
        Developer developer = new Developer();
        developer.registerListener(new DeveloperListenerImpl());
        developer.study();
        developer.work();
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java监听器(Listener)是一种事件驱动的编程模式,用于在发生特定事件时自动触发相关的处理操作。监听器的实现需要以下几个步骤: 1. 定义监听器接口:定义一个接口,包含要监听的事件类型及对应的处理方法,例如: ```java public interface MyListener { public void onEvent(Event e); } ``` 2. 实现监听器接口:实现定义的接口,实现对应的处理方法,例如: ```java public class MyListenerImpl implements MyListener { public void onEvent(Event e) { // 处理事件逻辑 } } ``` 3. 注册监听器:在需要监听事件的对象中,注册监听器,例如: ```java MyListener listener = new MyListenerImpl(); myObject.addMyListener(listener); ``` 4. 触发事件:在需要触发事件的地方,创建事件对象,调用监听器的处理方法,例如: ```java Event e = new Event(); myObject.notifyMyListener(e); ``` Java监听器的原理是基于观察者模式(Observer Pattern),观察者模式是一种对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。在Java中,被观察者对象维护一个观察者列表,在状态改变时,遍历观察者列表,调用观察者的更新方法。监听器就是观察者的一种实现方式,被观察者对象的状态改变就对应着某个事件的发生,观察者就是对应的监听器。通过监听器,实现了对象间的解耦,使得程序更加灵活和可扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dingwen_blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值