最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計(jì)模式之觀察者模式observer?pattern詳解

 更新時(shí)間:2023年12月04日 10:16:45   作者:制造bug的鍵盤鋼琴師  
這篇文章主要介紹了Java設(shè)計(jì)模式之觀察者模式observer?pattern詳解,當(dāng)一個(gè)對(duì)象發(fā)生數(shù)據(jù)變化時(shí),通知其他相關(guān)的一系列對(duì)象,接受到通知的對(duì)象根據(jù)該對(duì)象的變化進(jìn)行相應(yīng)處理以響應(yīng)變化的過程,需要的朋友可以參考下

觀察者模式

簡(jiǎn)介:

當(dāng)一個(gè)對(duì)象發(fā)生數(shù)據(jù)變化時(shí),通知其他相關(guān)的一系列對(duì)象,接受到通知的對(duì)象根據(jù)該對(duì)象的變化進(jìn)行相應(yīng)處理以響應(yīng)變化的過程。

概念解析:

其實(shí)與ActiveMQ、RabbitMQ等中間件的基本運(yùn)行模式相類似,觀察者模式的基礎(chǔ)構(gòu)建方式非常相近,其分為觀察者與被觀察者兩個(gè)部分。

(一)觀察者:從字面上看也就是指進(jìn)行觀察的對(duì)象,對(duì)應(yīng)來說也就是消息訂閱者;

(二)被觀察者:當(dāng)然被觀察者也就是指被觀察的對(duì)象,相應(yīng)的角色也就是消息發(fā)布者。

運(yùn)行方式:

推:消息以類似廣播的形式通知觀察者,觀察者只能被動(dòng)、無條件接受;

拉:接收到被觀察者的通知,可以自主決定獲取消息。

觀察者模式的實(shí)現(xiàn)

兩種方式實(shí)現(xiàn)觀察者設(shè)計(jì)模式的實(shí)現(xiàn),具體如下:

【1】手寫觀察者設(shè)計(jì)模式

【2】Java API 提供的觀察者設(shè)計(jì)模式 使用 Java API 提供的 Observer 和 Observeable 實(shí)現(xiàn)觀察者模式

手寫觀察者設(shè)計(jì)模式

編寫被觀察對(duì)象:subject.java

在這里插入圖片描述

編寫觀察者接口,起到統(tǒng)一規(guī)范作用.

在這里插入圖片描述

實(shí)現(xiàn)Observer接口,我們可以有一個(gè)或多個(gè)觀察者對(duì)一個(gè)subject進(jìn)行觀察

在這里插入圖片描述

編寫主類,進(jìn)行運(yùn)行展示

在這里插入圖片描述

運(yùn)行接口展示:

在這里插入圖片描述

通過API實(shí)現(xiàn)觀察者模式

通過繼承Observable父類,構(gòu)建一個(gè)被觀察者

在這里插入圖片描述

實(shí)現(xiàn)Observer創(chuàng)建一個(gè)觀察者類

在這里插入圖片描述

通過編寫主類測(cè)試類觀察結(jié)果:

在這里插入圖片描述

觀察者模式的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):觀察者與被觀察者抽象耦合,可定義一種穩(wěn)定的消息觸發(fā)機(jī)制。 缺點(diǎn):如果被觀察者有多個(gè)間接的觀察者,消息的傳遞將消耗更多時(shí)間,如果觀察者與被觀察者之間循環(huán)依賴,最終會(huì)導(dǎo)致系統(tǒng)崩潰。也正因如此與隊(duì)列消息相類似,我們一般會(huì)單獨(dú)開一個(gè)線程讓其進(jìn)行運(yùn)行,以避免程序堵塞,不能運(yùn)行的尷尬。

使用場(chǎng)景:

一個(gè)抽象模型有兩個(gè)方面,其中一個(gè)方面依賴于另一個(gè)方面。將這些方面封裝在獨(dú)立的對(duì)象中使它們可以各自獨(dú)立地改變和復(fù)用。 一個(gè)對(duì)象的改變將導(dǎo)致其他一個(gè)或多個(gè)對(duì)象也發(fā)生改變,而不知道具體有多少對(duì)象將發(fā)生改變,可以降低對(duì)象之間的耦合度。 一個(gè)對(duì)象必須通知其他對(duì)象,而并不知道這些對(duì)象是誰。 需要在系統(tǒng)中創(chuàng)建一個(gè)觸發(fā)鏈,A對(duì)象的行為將影響B(tài)對(duì)象,B對(duì)象的行為將影響C對(duì)象……,可以使用觀察者模式創(chuàng)建一種鏈?zhǔn)接|發(fā)機(jī)制。

注意事項(xiàng):

1、JAVA 中已經(jīng)有了對(duì)觀察者模式的支持類。

2、避免循環(huán)引用。

3、如果順序執(zhí)行,某一觀察者錯(cuò)誤會(huì)導(dǎo)致系統(tǒng)卡殼,一般采用異步方式。

到此這篇關(guān)于Java設(shè)計(jì)模式之觀察者模式observer pattern詳解的文章就介紹到這了,更多相關(guān)Java觀察者模式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java抽象類原理與用法實(shí)例詳解

    Java抽象類原理與用法實(shí)例詳解

    這篇文章主要介紹了Java抽象類原理與用法,結(jié)合實(shí)例形式詳細(xì)分析了Java抽象類相關(guān)概念、原理、定義、使用方法及操作注意事項(xiàng),需要的朋友可以參考下
    2019-11-11
  • 關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)

    關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)

    這篇文章主要介紹了關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā),需要的朋友可以參考下
    2017-06-06
  • 如何解決@value獲取不到y(tǒng)aml數(shù)組的問題

    如何解決@value獲取不到y(tǒng)aml數(shù)組的問題

    文章介紹了在使用YAML配置文件時(shí),通過@Value注解獲取整數(shù)和數(shù)組列表的配置方法,并提供了兩種解決方案:一種適用于非嵌套列表,另一種適用于嵌套列表等復(fù)雜配置
    2024-11-11
  • Springboot使用pdfbox提取PDF圖片的代碼示例

    Springboot使用pdfbox提取PDF圖片的代碼示例

    PDFBox是一個(gè)用于創(chuàng)建和處理PDF文檔的Java庫,它可以使用Java代碼創(chuàng)建、讀取、修改和提取PDF文檔中的內(nèi)容,本文就給大家介紹Springboot如何使用pdfbox提取PDF圖片,感興趣的同學(xué)可以借鑒參考
    2023-06-06
  • 淺談Mybatis中resultType為hashmap的情況

    淺談Mybatis中resultType為hashmap的情況

    這篇文章主要介紹了淺談Mybatis中resultType為hashmap的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • javaweb實(shí)現(xiàn)投票系統(tǒng)

    javaweb實(shí)現(xiàn)投票系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了javaweb實(shí)現(xiàn)投票系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java使用Sharding-JDBC分庫分表進(jìn)行操作

    Java使用Sharding-JDBC分庫分表進(jìn)行操作

    Sharding-JDBC 是無侵入式的 MySQL 分庫分表操作工具,本文主要介紹了Java使用Sharding-JDBC分庫分表進(jìn)行操作,感興趣的可以了解一下
    2021-08-08
  • java讀取配置文件(properties)的時(shí)候,unicode碼轉(zhuǎn)utf-8方式

    java讀取配置文件(properties)的時(shí)候,unicode碼轉(zhuǎn)utf-8方式

    這篇文章主要介紹了java讀取配置文件(properties)的時(shí)候,unicode碼轉(zhuǎn)utf-8方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Idea報(bào)錯(cuò): A JNI error has occurred的問題

    Idea報(bào)錯(cuò): A JNI error has occurred的問題

    這篇文章主要介紹了Idea報(bào)錯(cuò): A JNI error has occurred的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • Java數(shù)據(jù)結(jié)構(gòu)順序表的詳細(xì)講解

    Java數(shù)據(jù)結(jié)構(gòu)順序表的詳細(xì)講解

    大家好,今天給大家?guī)淼氖琼樞虮?,我覺得順序表還是有比較難理解的地方的,于是我就把這一塊的內(nèi)容全部整理到了一起,希望能夠給剛剛進(jìn)行學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的人帶來一些幫助,或者是已經(jīng)學(xué)過這塊的朋友們帶來更深的理解,我們現(xiàn)在就開始吧
    2022-05-05

最新評(píng)論

彭阳县| 万年县| 南丹县| 固阳县| 勃利县| 杭锦后旗| 文登市| 揭阳市| 安福县| 鹤壁市| 西丰县| 马公市| 亚东县| 电白县| 灌云县| 东乡族自治县| 祁门县| 英吉沙县| 正安县| 日照市| 长海县| 兴业县| 浮山县| 茂名市| 石林| 丰顺县| 嘉荫县| 长宁县| 朔州市| 营山县| 津南区| 青田县| 长寿区| 海原县| 奈曼旗| 邵武市| 正定县| 同江市| 洞口县| 甘德县| 方正县|