如何實(shí)現(xiàn)Java監(jiān)聽器詳解
一、前言
監(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");
}
}
四、測試
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();
}
}
到此這篇關(guān)于如何實(shí)現(xiàn)Java監(jiān)聽器詳解的文章就介紹到這了,更多相關(guān)Java監(jiān)聽器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法
在日常開發(fā)和工作中,我們可能要根據(jù)用戶上傳的文件做一系列的處理,本篇文章就以Excel表格文件為例,主要介紹了Spring?Boot?+?EasyExcel?+?SqlServer?進(jìn)行批量處理數(shù)據(jù)的高效方法,需要的朋友可以參考下2024-06-06
SpringBoot深入探究四種靜態(tài)資源訪問的方式
這一節(jié)詳細(xì)的學(xué)習(xí)一下SpringBoot的靜態(tài)資源訪問相關(guān)的知識(shí)點(diǎn)。像這樣的知識(shí)點(diǎn)還挺多,比如SpringBoot2的Junit單元測試等等。本章我們來了解靜態(tài)資源訪問的四種方式2022-05-05
使用Java實(shí)現(xiàn)查看線程的運(yùn)行狀態(tài)(附源碼)
在現(xiàn)代 Java 應(yīng)用中,線程的運(yùn)行狀態(tài)對(duì)于排查問題和優(yōu)化性能具有至關(guān)重要的作用,本文將使用Java編寫一個(gè)查看線程運(yùn)行狀態(tài)的工具,有需要的可以了解下2025-03-03
Struts2學(xué)習(xí)筆記(8)-Result常用類型
這篇文章主要介紹Struts2中Result四種常用的類型的用法,希望能給大家做一個(gè)參考。2016-06-06
JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API
這篇文章主要給大家介紹了關(guān)于JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API的相關(guān)資料,File用于表示文件系統(tǒng)中的一個(gè)文件或目錄,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Dapr在Java中的服務(wù)調(diào)用實(shí)戰(zhàn)過程詳解
這篇文章主要為大家介紹了Dapr在Java中的服務(wù)調(diào)用實(shí)戰(zhàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06

