国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專(zhuān)欄INFORMATION COLUMN

Java監(jiān)聽(tīng)模式

Taste / 2036人閱讀

摘要:說(shuō)明生活中,監(jiān)聽(tīng)無(wú)處不在。比如說(shuō),手機(jī)播放音樂(lè)功能,也是一種監(jiān)聽(tīng)你不點(diǎn)擊播放按鈕,手機(jī)就不放歌,當(dāng)你點(diǎn)擊時(shí),手機(jī)就播放音樂(lè)。即觸發(fā)某種行為,便執(zhí)行相應(yīng)的動(dòng)作。

說(shuō)明

  生活中,監(jiān)聽(tīng)無(wú)處不在。比如說(shuō),手機(jī)播放音樂(lè)功能,也是一種監(jiān)聽(tīng):你不點(diǎn)擊播放按鈕,手機(jī)就不放歌,當(dāng)你點(diǎn)擊時(shí),手機(jī)就播放音樂(lè)。即觸發(fā)某種行為,便執(zhí)行相應(yīng)的動(dòng)作。

組成

Java監(jiān)聽(tīng)模式右三個(gè)部分組成:事件源、事件對(duì)象、事件監(jiān)聽(tīng)器

當(dāng)事件源觸發(fā)某種行為,會(huì)自動(dòng)執(zhí)行事件監(jiān)聽(tīng)器里面相應(yīng)的方法

事件監(jiān)聽(tīng)器方法參數(shù)是事件對(duì)象,事件對(duì)象包含事件源的引用,在方法中可以獲取事件源的引用

PS:好吧,說(shuō)的有點(diǎn)暈,因?yàn)槲乙彩莿倢W(xué)的啦,看的暈的同學(xué)直接看代碼就好了。

實(shí)現(xiàn)

事件源:Student擁有read()方法,

package com.petro.listener;
/**
 * @ClassName: Student
 * @description: 監(jiān)聽(tīng)模式的事件源
 * @author Petro Chen
 * @date: 2017年9月12日下午11:32:03
 */
public class Student {
    
    // read方法事件監(jiān)聽(tīng)器引用
    private Listener listener;
    
    /**
     * @description: 注冊(cè)read方法的事件監(jiān)聽(tīng)器
     * @param listener 事件監(jiān)聽(tīng)器引用
     * @return void
     * @throws
     */
    public void setReadListener(Listener listener) {
        this.listener = listener;
    }
    
    /**
     * @description: 學(xué)生的read方法
     * @return void
     * @throws
     */
    public void read() {
        if (listener != null) {
            Event event = new Event();
            event.setStudent(this);
            // 學(xué)生正在讀書(shū)...
            listener.isReading(event);
        }
    }
}

事件監(jiān)聽(tīng)器:用來(lái)監(jiān)聽(tīng)Student.read()方法

package com.petro.listener;

/**
 * @ClassName: Listener
 * @description: 事件監(jiān)聽(tīng)器
 * @author Petro Chen
 * @date: 2017年9月12日下午11:33:56
 */
public interface Listener {
    /**
     * @description: 學(xué)生讀書(shū)觸發(fā)的事件
     * @param event 事件對(duì)象引用,通過(guò)這個(gè)引用,獲取事件源的引用,然后就可以對(duì)事件源進(jìn)行操作
     * @return void
     * @throws
     */
    public void isReading(Event event);
}

事件對(duì)象:持有事件源的引用

package com.petro.listener;
/**
 * @ClassName: Event
 * @description: 事件對(duì)象
 * @author Petro Chen
 * @date: 2017年9月12日下午11:41:28
 */
public class Event {
    // 放置事件源的引用
    private Student student;

    public Student getStudent() {
        return student;
    }

    public void setStudent(Student student) {
        this.student = student;
    }
}

  到此為止,我們的監(jiān)聽(tīng)模式寫(xiě)完了,接下來(lái)當(dāng)然是測(cè)試?yán)?/p>

測(cè)試部分:監(jiān)聽(tīng)接口實(shí)現(xiàn)

package com.petro.test;

import com.petro.listener.Event;
import com.petro.listener.Listener;
/**
 * @ClassName: ReadListener
 * @description: 監(jiān)聽(tīng)器實(shí)現(xiàn),讀書(shū)(read方法)監(jiān)聽(tīng)器
 * @author Petro Chen
 * @date: 2017年9月13日上午12:03:35
 */
public class ReadListener implements Listener {

    @Override
    public void isReading(Event event) {
        /**
         * 使用 event.getStudent()方法獲取事件源的引用,然后執(zhí)行相關(guān)操作
         */
        System.out.println("正在讀書(shū)...");
    }

}

測(cè)試部分:程序入口

package com.petro.test;

import com.petro.listener.Student;
/**
 * @ClassName: Test
 * @description: 監(jiān)聽(tīng)器模式測(cè)試
 * @author Petro Chen
 * @date: 2017年9月13日上午12:07:04
 */
public class Test {
    public static void main(String[] args) {
        ReadListener readListener = new ReadListener();
        Student student = new Student();
        student.setReadListener(readListener);
        // 當(dāng)執(zhí)行這個(gè)方法時(shí),會(huì)自動(dòng)調(diào)用ReadListener.isReading()方法
        student.read();
    }
}

監(jiān)聽(tīng)模式demo地址,有需要的可以去clone

https://github.com/MiniPeter/...
結(jié)語(yǔ)

  本篇博文到此差不多就結(jié)束啦,對(duì)本篇博文有建議或者疑惑的可以留言評(píng)論哦。歡迎指正錯(cuò)誤>_<

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/70923.html

相關(guān)文章

  • 如何使用 Java8 實(shí)現(xiàn)觀察者模式?(下)

    摘要:線程安全的實(shí)現(xiàn)前面章節(jié)介紹了在現(xiàn)代環(huán)境下的實(shí)現(xiàn)觀察者模式,雖然簡(jiǎn)單但很完整,但這一實(shí)現(xiàn)忽略了一個(gè)關(guān)鍵性問(wèn)題線程安全。截止目前實(shí)現(xiàn)了線程安全,在接下來(lái)的章節(jié)中將介紹提取主題的邏輯并將其類(lèi)封裝為可重復(fù)代碼單元的方式優(yōu)缺點(diǎn)。 【編者按】本文作者是 BAE 系統(tǒng)公司的軟件工程師 Justin Albano。在本篇文章中,作者通過(guò)在 Java8 環(huán)境下實(shí)現(xiàn)觀察者模式的實(shí)例,進(jìn)一步介紹了什么是觀察...

    afishhhhh 評(píng)論0 收藏0
  • JMS 在 SpringBoot 中的使用

    摘要:本文主要講述消息服務(wù)在中的使用。所以需要一個(gè)監(jiān)聽(tīng)容器工廠的概念,即接口,它會(huì)引用上面創(chuàng)建好的與的連接工廠,由它來(lái)負(fù)責(zé)接收消息以及將消息分發(fā)給指定的監(jiān)聽(tīng)器。為了消費(fèi)消息,訂閱者必須保持運(yùn)行的狀態(tài)。 JMS 在 SpringBoot 中的使用 摘要:本文屬于原創(chuàng),歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)保留出處:https://github.com/jasonGeng88/blog> 本文所有服務(wù)均采用doc...

    Michael_Ding 評(píng)論0 收藏0
  • 一起學(xué)并發(fā)編程 - 利用觀察者模式監(jiān)聽(tīng)線程狀態(tài)

    摘要:在前面的文章中介紹過(guò)觀察者模式及并發(fā)編程的基礎(chǔ)知識(shí),為了讓大家更好的了解觀察者模式故而特意寫(xiě)了這篇番外概述在多線程下我們需要知道當(dāng)前執(zhí)行線程的狀態(tài)是什么比如運(yùn)行,關(guān)閉,異常等狀態(tài)的通知,而且不僅僅是更新當(dāng)前頁(yè)面。 在前面的文章中介紹過(guò) 觀察者模式 及 并發(fā)編程的基礎(chǔ)知識(shí),為了讓大家更好的了解觀察者模式故而特意寫(xiě)了這篇番外.. 概述 在Java多線程下,我們需要知道當(dāng)前執(zhí)行線程的狀態(tài)是...

    Juven 評(píng)論0 收藏0
  • Java NIO淺析

    摘要:阻塞請(qǐng)求結(jié)果返回之前,當(dāng)前線程被掛起。也就是說(shuō)在異步中,不會(huì)對(duì)用戶(hù)線程產(chǎn)生任何阻塞。當(dāng)前線程在拿到此次請(qǐng)求結(jié)果的過(guò)程中,可以做其它事情。事實(shí)上,可以只用一個(gè)線程處理所有的通道。 準(zhǔn)備知識(shí) 同步、異步、阻塞、非阻塞 同步和異步說(shuō)的是服務(wù)端消息的通知機(jī)制,阻塞和非阻塞說(shuō)的是客戶(hù)端線程的狀態(tài)。已客戶(hù)端一次網(wǎng)絡(luò)請(qǐng)求為例做簡(jiǎn)單說(shuō)明: 同步同步是指一次請(qǐng)求沒(méi)有得到結(jié)果之前就不返回。 異步請(qǐng)求不會(huì)...

    yeooo 評(píng)論0 收藏0
  • Java Socke 探究

    摘要:在設(shè)定時(shí)間內(nèi)接收到相應(yīng)操作的請(qǐng)求則返回可以處理請(qǐng)求的數(shù)量,否則在超時(shí)后返回,程序繼續(xù)執(zhí)行。使用接收請(qǐng)求并處理接收到請(qǐng)求后調(diào)用返回的集合。保存了處理當(dāng)前請(qǐng)求的和,并提供了不同的操作類(lèi)型。默認(rèn)值為且其值必須小于的值。 Java中的Socket可以分為普通Socket和NioSocket兩種。 普通Socket的用法 Java中的網(wǎng)絡(luò)通信是通過(guò)Socket實(shí)現(xiàn)的,Socket分為Server...

    Imfan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<