欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

如何實(shí)現(xiàn)Java監(jiān)聽器詳解

 更新時(shí)間:2021年06月01日 16:14:37   作者:dingwen_blog  
今天帶大家了解Java監(jiān)聽器是如何實(shí)現(xiàn)的及實(shí)現(xiàn)原理是什么,文中有非常詳細(xì)的說(shuō)明,對(duì)正在學(xué)習(xí)的小伙伴們很有幫助,需要的朋友可以參考下

一、前言

監(jiān)聽器就是監(jiān)聽事件源是否發(fā)生了某一個(gè)事件,當(dāng)發(fā)生指定監(jiān)聽的事件時(shí)事件源會(huì)向已注冊(cè)的監(jiān)聽器發(fā)送消息對(duì)象。監(jiān)聽器可以獲得事件對(duì)象進(jìn)行相關(guān)操作。

二、監(jiān)聽器模型

  • 事件源: 發(fā)生事件的對(duì)象
  • 消息:觸發(fā)監(jiān)聽的某一個(gè)事件
  • 監(jiān)聽器:監(jiān)聽發(fā)生的某個(gè)事件進(jìn)行業(yè)務(wù)處理

在這里插入圖片描述

三、案例實(shí)現(xiàn)

在開發(fā)者進(jìn)行開發(fā)和學(xué)習(xí)之前進(jìn)行監(jiān)聽處理業(yè)務(wù)邏輯。

DeveloperListener

package demo.listener;

/**
 * 監(jiān)聽器接口
 * 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;

/**
 * 開發(fā)者類
 * dingwen
 * 2021/5/30 14:34
 **/
public class Developer {
    private DeveloperListener developerListener;


    /**
     * 注冊(cè)監(jiān)聽器
     *
     * @param developerListener 開發(fā)人員監(jiān)聽器
     */
    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;

/**
 * 事件對(duì)象
 * dingwen
 * 2021/5/30 14:32
 **/
public class Event {
    /**
     * 開發(fā)人員
     */
    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");

    }
}

四、測(cè)試

package demo.listener;

/**
 * 測(cè)試
 * 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();
    }
}

到此這篇關(guān)于如何實(shí)現(xiàn)Java監(jiān)聽器詳解的文章就介紹到這了,更多相關(guān)Java監(jiān)聽器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Springboot-yaml配置和自動(dòng)配置原理分析

    Springboot-yaml配置和自動(dòng)配置原理分析

    這篇文章主要介紹了Springboot-yaml配置和自動(dòng)配置原理分析,自動(dòng)配置原理是配置文件配置debug: true可以在控制臺(tái)打印自動(dòng)配置報(bào)告.可以打印所有的啟動(dòng)的自動(dòng)配置和沒(méi)有啟動(dòng)的自動(dòng)配置類,需要的朋友可以參考下
    2021-06-06
  • Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例

    這篇文章主要介紹了Mybatis 動(dòng)態(tài)sql if 判讀條件等于一個(gè)數(shù)字的案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • java生成excel報(bào)表文件示例

    java生成excel報(bào)表文件示例

    本篇文章主要介紹了java生成excel報(bào)表文件示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • Java爬蟲(Jsoup與WebDriver)的使用

    Java爬蟲(Jsoup與WebDriver)的使用

    這篇文章主要介紹了Java爬蟲(Jsoup與WebDriver)的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java各種排序算法匯總(冒泡,選擇,歸并,希爾及堆排序等)

    Java各種排序算法匯總(冒泡,選擇,歸并,希爾及堆排序等)

    這篇文章主要介紹了Java各種排序算法,以大量實(shí)例形式匯總分析了Java常用的各種排序算法,包括冒泡排序、快速排序、堆排序、插入排序、希爾排序、選擇排序、歸并排序等,需要的朋友可以參考下
    2015-11-11
  • MyBatis與Hibernate的比較

    MyBatis與Hibernate的比較

    Hibernate 與Mybatis都是流行的持久層開發(fā)框架,但Hibernate開發(fā)社區(qū)相對(duì)多熱鬧些,支持的工具也多,更新也快,當(dāng)前最高版本4.1.8。而Mybatis相對(duì)平靜,工具較少,當(dāng)前最高版本3.2
    2016-01-01
  • 如何在Java中調(diào)用python文件執(zhí)行詳解

    如何在Java中調(diào)用python文件執(zhí)行詳解

    豐富的第三方庫(kù)使得python非常適合用于進(jìn)行數(shù)據(jù)分析,最近在項(xiàng)目中就涉及到j(luò)ava調(diào)用python實(shí)現(xiàn)的算法,下面這篇文章主要給大家介紹了關(guān)于如何在Java中調(diào)用python文件執(zhí)行的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇

    Java深入了解數(shù)據(jù)結(jié)構(gòu)之哈希表篇

    哈希表是一種根據(jù)關(guān)鍵碼去尋找值的數(shù)據(jù)映射結(jié)構(gòu),該結(jié)構(gòu)通過(guò)把關(guān)鍵碼映射的位置去尋找存放值的地方,說(shuō)起來(lái)可能感覺(jué)有點(diǎn)復(fù)雜,我想我舉個(gè)例子你就會(huì)明白了,最典型的的例子就是字典
    2022-01-01
  • Java動(dòng)態(tài)代理和反射機(jī)制詳解

    Java動(dòng)態(tài)代理和反射機(jī)制詳解

    這篇文章主要介紹了Java動(dòng)態(tài)代理和反射機(jī)制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • PrintStream和PrintWriter的區(qū)別簡(jiǎn)介

    PrintStream和PrintWriter的區(qū)別簡(jiǎn)介

    這篇文章主要介紹了PrintStream和PrintWriter的區(qū)別簡(jiǎn)介,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-01-01

最新評(píng)論