如何實現(xiàn)Java監(jiā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ù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例
這篇文章主要介紹了Mybatis 動態(tài)sql if 判讀條件等于一個數(shù)字的案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11Java各種排序算法匯總(冒泡,選擇,歸并,希爾及堆排序等)
這篇文章主要介紹了Java各種排序算法,以大量實例形式匯總分析了Java常用的各種排序算法,包括冒泡排序、快速排序、堆排序、插入排序、希爾排序、選擇排序、歸并排序等,需要的朋友可以參考下2015-11-11PrintStream和PrintWriter的區(qū)別簡介
這篇文章主要介紹了PrintStream和PrintWriter的區(qū)別簡介,具有一定借鑒價值,需要的朋友可以參考下2018-01-01