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

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

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

一、前言

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

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

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

在這里插入圖片描述

三、案例實現(xiàn)

在開發(fā)者進行開發(fā)和學習之前進行監(jiān)聽處理業(yè)務邏輯。

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;


    /**
     * 注冊監(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;

/**
 * 事件對象
 * 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");

    }
}

四、測試

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();
    }
}

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

相關文章

  • Springboot-yaml配置和自動配置原理分析

    Springboot-yaml配置和自動配置原理分析

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

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

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

    java生成excel報表文件示例

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

    Java爬蟲(Jsoup與WebDriver)的使用

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

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

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

    MyBatis與Hibernate的比較

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

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

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

    Java深入了解數(shù)據(jù)結構之哈希表篇

    哈希表是一種根據(jù)關鍵碼去尋找值的數(shù)據(jù)映射結構,該結構通過把關鍵碼映射的位置去尋找存放值的地方,說起來可能感覺有點復雜,我想我舉個例子你就會明白了,最典型的的例子就是字典
    2022-01-01
  • Java動態(tài)代理和反射機制詳解

    Java動態(tài)代理和反射機制詳解

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

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

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

最新評論