日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java EE重新审视设计模式:观察者

發布時間:2023/12/3 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java EE重新审视设计模式:观察者 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
除了以多種語言和許多應用程序實現之外,Observer Pattern自1.0版以來一直是Java的一部分。 觀察者模式也是好萊塢原則的良好實施。 就像好萊塢的特工喜歡回調候選人以代替某個職位,而不是每天被要求詢問可用工作一樣,大多數服務器端資源(例如將可用數據推送到適當的客戶端)而不是被要求一次更新。間隔。

這樣的時間間隔查詢不僅會消耗服務器上的大量資源,還會導致網絡流量超出實際需要。 盡管Java從第0天開始就支持Observer Pattern,但始終認為它不是最佳實現(請參閱Observer和Observable )。 進入JavaEE世界甚至會使事情復雜化。 但是,JavaEE6帶有替代方法。

JavaEE6提供了“ @Observable”注釋,作為Observer Pattern的現成的簡便實現。 讓我們訪問上一篇文章 ,并將其擴展為使用觀察者。

package com.devchronicles.observer;import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.enterprise.event.Event; import javax.inject.Inject;/**** @author Murat Yener*/ @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRED) public class EventService {@Injectprivate String message;@Inject Event<String> event;public void startService(){System.out.println("start service call "+message);event.fire("this is my "+message);System.out.println("done...");} }

將向EventService類注入String類型的Event對象,該事件對象可用于觸發String對象。 如果您沒有閱讀上一篇文章,則message對象是一個String,它將由工廠產生并注入到EventService類中。 為簡化起見,您可以在名為message的變量中鍵入任何字符串常量。

既然我們已經完成了可觀察部分,那么現在該創建一個觀察者來監聽我們的事件了。

package com.devchronicles.observer;import javax.ejb.Stateless; import javax.enterprise.event.Observes;/**** @author Murat Yener*/ @Stateless public class EventObserver {public void doLogging(@Observes String message){System.out.println("Observed:"+message);} }

Observes注釋將方法標記為已觸發的String事件的觀察者。 如果運行服務器并啟動start service方法,您將認識到如何將字符串神奇地注入EventService類,然后將其觸發到EventObserver類將其嘲笑(觀察到)的位置。 令人驚訝的是,這是在JavaEE6中實現觀察者模式所需的全部。

如前所述,JavaEE6提供了一種簡單的方法來實現觀察者模式。 發布該帖子后,我收到了關于如何區分觸發和觀察到的字符串類型的幾個問題。

盡管在現實世界中,您可能不會觸發和觀察純字符串,但是您自己的對象將按其類型進行觀察,但是區分相同類型的對象并設置不同的觀察者來偵聽它們仍然很容易。

首先讓我們從區分純字符串的部分開始。

package com.devchronicles.observer;import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import javax.inject.Qualifier;/**** @author Murat Yener*/ @Qualifier @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.FIELD,ElementType.PARAMETER}) public @interface MyEvent {Type value();enum Type{LOGGING, MESSAGE} }

上面的接口將用作注釋,以標記要觸發的字符串,以后只需注釋相應的部分即可觀察到。

package com.devchronicles.observer;import javax.ejb.Stateless; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.enterprise.event.Event; import javax.inject.Inject;/**** @author Murat Yener*/ @Stateless @TransactionAttribute(TransactionAttributeType.REQUIRED) public class EventService {@Injectprivate String message;@Inject @MyEvent(MyEvent.Type.LOGGING)Event<String> event;@Inject @MyEvent(MyEvent.Type.MESSAGE)Event<String> anotherEvent;public void startService(){System.out.println("start service call "+message);event.fire("this is my "+message);System.out.println("done...");anotherEvent.fire("done with the service!");} }

我們只添加具有所需類型的MyEvent批注,然后像以前一樣觸發事件。 標有紅色的部分就是我們在上一篇文章中添加的示例。

現在讓我們注釋觀察者部分。 同樣,我們將在前面的示例中添加紅色部分。

package com.devchronicles.observer;import javax.ejb.Stateless; import javax.enterprise.event.Observes;/**** @author Murat Yener*/ @Stateless public class EventObserver {public void doLogging(@Observes @MyEvent(MyEvent.Type.LOGGING) String message){System.out.println("Observed:"+message);}public void doLogging(@Observes @MyEvent(MyEvent.Type.MESSAGE) String message){System.out.println("Observed another type of message:"+message);} }

那就是您甚至需要區分要觀察的相同類型對象的全部。

參考: JavaEE重新審視設計模式:觀察者 , JavaEE重新審視設計模式:觀察器來自JCG合作伙伴 Murat Yener的Developer Chronicles博客上的第2部分 。


翻譯自: https://www.javacodegeeks.com/2012/04/java-ee-revisits-design-patterns_17.html

總結

以上是生活随笔為你收集整理的Java EE重新审视设计模式:观察者的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲少妇网站 | 女人性做爰69片免费看 | av小说免费在线观看 | 一本色道久久88加勒比—综合 | 农村妇女精品一区二区 | 日本深夜福利 | 蜜臀99久久精品久久久久小说 | 在线播放国产视频 | 日本三级日本三级日本三级极 | 中文字幕日韩精品在线观看 | 91日韩一区二区 | 俄罗斯av片| 久久久久久1 | 久久99综合 | 婷婷激情成人 | 偷偷操av | 打开免费观看视频在线播放 | 欧美一区二区二区 | 欧美在线免费观看视频 | 伊人久久五月天 | 依依激情网| 亚洲中文字幕在线观看 | 亚洲精品在线视频 | 色偷偷五月天 | 国产精品一区二区在线 | 理论片高清免费理伦片 | 欧美日韩a√ | 午夜精品久久久久久99热 | 精品日本一区二区三区在线观看 | 无遮挡无掩盖网站 | 精品成人在线观看 | 伊是香蕉大人久久 | www.国产麻豆| 91成人在线观看喷潮蘑菇 | 日韩欧美激情视频 | 久久久久激情 | 99国产精品久久久久久久成人热 | va毛片 | 护士人妻hd中文字幕 | 在线视频亚洲色图 | 91网视频 | 久久人人干 | 欧美精品一区二区在线观看 | 伊人焦久影院 | 国产男男gay体育生网站 | 国产片久久 | 四川丰满少妇被弄到高潮 | 国产婷婷色一区二区三区 | 亚洲一区二区视频在线播放 | 日本三级一区二区三区 | 人人妻人人澡人人爽精品日本 | 久久久看| 精品国产av 无码一区二区三区 | 欧美电影一区二区三区 | 欧美交换国产一区内射 | 肉大捧一进一出免费视频 | 欧美日韩精品在线播放 | 亚洲成人av免费在线观看 | 人人射人人爽 | 亚洲蜜臀av乱码久久精品蜜桃 | 欧美日韩a级| 国产精品久久久久影院老司 | 91超碰在线观看 | 日本成人精品视频 | 国产三区在线观看 | 夜夜免费视频 | 欧美在线激情 | 中文字幕一区二区三区日韩精品 | 亚洲天堂av一区二区 | 宅男av| 久久久综合精品 | 国产欧美一区二区三区在线看 | 精品熟女一区二区三区 | 女人被灌满精子 | 亚洲美女福利视频 | 亚洲少妇网 | 亚洲欧洲成人精品久久一码二码 | 成年在线视频 | 天堂综合网 | 97在线免费视频观看 | 国产主播啪啪 | 九九热在线观看 | 99久久婷婷国产综合精品草原 | 肉丝美脚视频一区二区 | 韩国黄色精品 | 在线黄网 | 在线观看你懂得 | 干欧美 | 成人1区| 中文字幕久久熟女蜜桃 | 国产精品99一区二区三区 | 人与动物2免费观看完整版电影高清 | 日韩av电影手机在线观看 | 台湾a级片 | 蜜臀av88| 欧美日韩久久婷婷 | 黄色免费片 | 亚洲综合免费观看高清完整版在线 | 探花视频在线免费观看 |