如何實現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();
    }
}

到此這篇關於如何實現Java監聽器詳解的文章就介紹到這瞭,更多相關Java監聽器內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: