欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java設計模式之觀察者模式observer?pattern詳解

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

觀察者模式

簡介:

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

概念解析:

其實與ActiveMQ、RabbitMQ等中間件的基本運行模式相類似,觀察者模式的基礎構建方式非常相近,其分為觀察者與被觀察者兩個部分。

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

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

運行方式:

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

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

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

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

【1】手寫觀察者設計模式

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

手寫觀察者設計模式

編寫被觀察對象:subject.java

在這里插入圖片描述

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

在這里插入圖片描述

實現(xiàn)Observer接口,我們可以有一個或多個觀察者對一個subject進行觀察

在這里插入圖片描述

編寫主類,進行運行展示

在這里插入圖片描述

運行接口展示:

在這里插入圖片描述

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

通過繼承Observable父類,構建一個被觀察者

在這里插入圖片描述

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

在這里插入圖片描述

通過編寫主類測試類觀察結果:

在這里插入圖片描述

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

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

使用場景:

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

注意事項:

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

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

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

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

相關文章

  • 關于Spring框架中異常處理情況淺析

    關于Spring框架中異常處理情況淺析

    最近學習Spring時,認識到Spring異常處理的強大,這篇文章主要給大家介紹了關于Spring框架中異常處理情況的相關資料,通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-08-08
  • Java annotation元注解原理實例解析

    Java annotation元注解原理實例解析

    這篇文章主要介紹了Java annotation元注解原理實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • 淺談springboot自動裝配原理

    淺談springboot自動裝配原理

    作為Spring Boot的精髓,自動配置原理首當其沖.今天就帶大家了解一下springboot自動裝配的原理,文中有非常詳細的代碼示例,對正在學習java的小伙伴們很有幫助,需要的朋友可以參考下
    2021-05-05
  • Maven導入依賴時報錯如何解決

    Maven導入依賴時報錯如何解決

    這篇文章主要介紹了Maven導入依賴時報錯如何解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-12-12
  • 解決J2EE-session在瀏覽器關閉后失效問題

    解決J2EE-session在瀏覽器關閉后失效問題

    最近做項目使用的是Spring+SpringMVC+Mybatis框架,maven管理目錄的javaweb端系統(tǒng),對于session的一些問題,在此小編給大家分享到腳本之家平臺,需要的朋友參考下吧
    2018-01-01
  • spring配置文件中util:properties和context:property-placeholder用法

    spring配置文件中util:properties和context:property-placeholder用法

    這篇文章主要介紹了spring配置文件中util:properties和context:property-placeholder用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • SpringBoot?MP簡單的分頁查詢測試實現(xiàn)步驟分解

    SpringBoot?MP簡單的分頁查詢測試實現(xiàn)步驟分解

    好久沒水后端的東西了,最近在做vue項目寫前端的代碼,所以cloud也停進度了,吃完飯突然記得我沒有在博客里寫分頁的東西,雖然項目中用到了,但是沒有拎出來,這里就拎出來看看
    2023-04-04
  • Java和C語言分別實現(xiàn)水仙花數(shù)及拓展代碼

    Java和C語言分別實現(xiàn)水仙花數(shù)及拓展代碼

    這篇文章主要介紹了分別用Java和C語言實現(xiàn)水仙花數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-11-11
  • java獲取當前日期使用實例

    java獲取當前日期使用實例

    本文為大家介紹java日期的使用實例,日期輸出格式為date:2013-12-17,大家參考使用吧
    2014-01-01
  • Log4j日志分類和過濾敏感字段的實例

    Log4j日志分類和過濾敏感字段的實例

    這篇文章主要介紹了Log4j日志分類和過濾敏感字段的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12

最新評論