国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Observable設計模式簡介

譯文 精選
開發 前端
Observable設計模式存在于許多Java API和響應式編程中。下面介紹Java中永恒的Observable模式。

譯者 | 蔡柱梁

策劃 | 言征

Observable設計模式存在于許多Java API和響應式編程中。下面介紹Java中永恒的Observable模式。  

Observable設計模式用于許多重要的Java API。一個眾所周知的示例是使用ActionListenerAPI執行操作的JButton。在這個例子中,我們ActionListener在按鈕上進行了監聽或觀察。單擊按鈕時,ActionListener將執行操作。

Observable模式也用于響應式編程。在反應式應用程序中使用觀察者是有道理的,因為反應式的本質是反應:當另一個進程發生時,事情就會發生。

Observable是一種行為設計模式。它的功能是在事件發生時執行一個動作。兩個常見的例子是按鈕點擊和通知,但這種模式還有更多用途。

一、Observable模式的一個例子

在Observable模式中,一個對象在執行操作時通知另一個對象。為了理解該模式的價值,讓我們想象一個需要單擊按鈕并且沒有通知另一個對象的場景,如圖1所示。

圖片

請注意,ActionCheck必須每秒檢查一次按鈕。現在,想象一下,如果我們每秒對該按鈕進行多次操作檢查。您能想象這會對您的應用程序性能產生什么影響嗎?

讓Do Something按鈕通知ActionCheck.這樣,ActionCheck邏輯就不需要每秒輪詢Do Something按鈕。

二、Observable設計模式的元素

在下圖中,請注意觀察者模式的基礎是Observer接口(即觀察的對象)和Subject(被觀察的對象)。類NewsletterimplementsSubject和Subscriberimplements Observer。最后,SendEmailMain執行Observable設計模式。

圖片

三、代碼中的Observable模式

Subject接口,也稱為Observableor Publisher,是Observable設計模式的基礎。基本上,它存儲觀察者并在觀察到的動作發生時立即通知他們。看一下Subject界面。

public interface Subject {

void addSubscriber(Observer observer);
void removeSubscriber(Observer observer);
void notifySubscribers();

}

1.觀察者界面

接口(Observer有時也稱為Subscriber)由訂閱者實現,它試圖觀察是否已執行操作:

public interface Observer {

public void update(String email);

}

2.行動中可觀察

讓我們用一個時事通訊的例子來實現這個Subject接口。在下面的代碼中,我們存儲我們的觀察者(在本例中為時事通訊訂閱者),并且當他們的電子郵件被添加到訂閱時,每個訂閱者都會收到通知。

import java.util.ArrayList;
import java.util.List;

public class Newsletter implements Subject {

protected List<Observer> observers = new ArrayList<>();
protected String name;
protected String newEmail;

public Newsletter(String name) {
this.name = name;
}

public void addNewEmail(String newEmail) {
this.newEmail = newEmail;
notifySubscribers();
}

@Override

public void addSubscriber(Observer observer) {
observers.add(observer);
}

 @Override

public void removeSubscriber(Observer observer) {
observers.remove(observer);
}

 @Override

public void notifySubscribers() {
observers.forEach(observer -> observer.update(newEmail));
}
}

3.訂閱者

Subscriber類表示訂閱電子郵件時事通訊的用戶。此類實現了Observer接口。它是我們將觀察的對象,以便我們知道是否發生了事件。

class Subscriber implements Observer {

private String name;

public Subscriber(String name) {
this.name = name;
}

 @Override

public void update(String newEmail) {
System.out.println("Email for: " + name + " | Content:" + newEmail);
}

}

4.發送郵件主

現在我們有了使Observable模式有效工作的主類。首先,我們將創建Newsletter對象。然后,我們將添加和刪除訂閱者。最后,我們將添加一封電子郵件并通知訂閱者他們的狀態。

public class SendEmailMain {

public static void main(String[] args) {
Newsletter newsLetter = new Newsletter("Java Challengers");

Observer duke = new Subscriber("Duke");
Observer juggy = new Subscriber("Juggy");
Observer dock = new Subscriber("Moby Dock");

newsLetter.addSubscriber(duke);
newsLetter.addNewEmail("Lambda Java Challenge");
newsLetter.removeSubscriber(duke);

newsLetter.addSubscriber(juggy);
newsLetter.addSubscriber(dock);
newsLetter.addNewEmail("Virtual Threads Java Challenge");
}

}

這是我們代碼的輸出:

Email for: Duke | Content:Lambda Java Challenge
Email for: Juggy | Content:Virtual Threads Java Challenge
Email for: Moby Dock | Content:Virtual Threads Java Challenge

五、何時使用Observable模式

當一個動作發生并且需要通知多個對象時,最好使用Observable模式而不是Object多次檢查狀態。想象一下,有 200多個對象需要接收通知;在這種情況下,您必須將200乘以檢查發生的次數。

通過使用Observable模式,通知只會對所有訂閱者發生一次。這是一個巨大的性能提升,也是一種有效的代碼優化。此代碼可以輕松擴展或更改。

反應式編程范式到處都使用Observable模式。如果您曾經使用過Angular,那么您就會知道使用Observable組件非常普遍。響應式組件經常被其他事件和邏輯觀察到,當滿足特定條件時,組件將執行一些動作。

六、結論

以下是關于Observable設計模式,需要記住的要點:

Observable使用開閉SOLID原則。這意味著我們可以擴展addSubscriber和removeSubscriber方法而無需更改方法名。原因是它接收的是Subject接口而不是直接實現。

Observer界面觀察發生在Subject。

Subject也被稱為可觀察對象,因為它是一個將被觀察的主題。它也可以稱為發布器,因為它發布事件。

Observer也被稱為訂閱者,因為它訂閱了主題/發布者。操作發生時通知觀察者。

如果我們不使用Observable設計模式,訂閱者將不得不不斷輪詢以了解是否發生了事件,這可能會對應用程序性能造成嚴重影響。Observable是一個更有效的解決方案。

原文鏈接:??https://www.infoworld.com/article/3682139/intro-to-the-observable-design-pattern.html??

譯者介紹

蔡柱梁,51CTO社區編輯,從事Java后端開發8年,做過傳統項目廣電BOSS系統,后投身互聯網電商,負責過訂單,TMS,中間件等。

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2010-06-09 18:17:18

UML

2012-04-05 11:35:07

.NET

2010-07-07 09:48:05

UML

2011-07-27 16:55:09

windows安全模式

2009-06-11 17:13:44

J2EE設計模式Dao設計模式

2021-02-01 10:01:58

設計模式 Java單例模式

2010-03-19 10:38:30

無線AP模式

2010-07-15 18:04:20

Perl模式

2023-11-02 21:11:11

JavaScript設計模式

2023-07-13 15:24:13

云計算云原生架構

2020-11-03 13:05:18

命令模式

2020-11-04 08:54:54

狀態模式

2020-10-23 09:40:26

設計模式

2013-11-26 16:09:34

Android設計模式

2023-04-10 09:20:13

設計模式訪客模式

2020-08-21 07:23:50

工廠模式設計

2022-01-12 13:33:25

工廠模式設計

2023-05-04 08:47:31

命令模式抽象接口

2021-04-19 21:25:48

設計模式到元

2011-07-25 17:51:10

windows安全模式
點贊
收藏

51CTO技術棧公眾號

国产区精品视频| 国产福利在线| 中文字幕在线观看网站| 亚洲欧洲韩国日本视频| 欧美视频专区一二在线观看| 在线播放中文一区| 四虎永久在线精品无码视频| 亚洲综合图色| 国产在线观看免费一区| 红桃av永久久久| 久精品免费视频| 日韩国产成人无码av毛片| 亚洲精品永久免费视频| 国产精一品亚洲二区在线视频| 欧美日韩高清影院| 欧美少妇一区二区三区| 最新欧美电影| 婷婷亚洲久悠悠色悠在线播放| 国产亚洲精品自在久久| 大桥未久女教师av一区二区| 日韩一区二区在线观看视频| 国产精品日韩三级| 国模大胆一区二区三区| 日韩在线中文字幕| 91精品国产91久久久久久青草| 成人av电影在线播放| 爱情岛论坛亚洲入口| 精品一区二区三区四区五区 | 精精国产xxxx视频在线动漫| 伊人久久大香| 日韩中文字幕区一区有砖一区| 亚洲国产欧美在线成人app| 视频三区在线观看| 国产日韩欧美麻豆| 久久99国产精品一区| 97精品视频| 久久免费视频网站| 欧美极品少妇videossex| 一区二区欧美激情| 国产女优一区| 3dmax动漫人物在线看| 欧洲成人午夜免费大片| 热久久免费视频精品| 免费精品一区| 久久精品女人的天堂av| 国产高清不卡二三区| 手机亚洲第一页| 欧美精品情趣视频| 久久一区激情| 免费在线观看麻豆视频| 久久99精品久久久久久青青91| 亚洲欧美日韩一区在线观看| 好紧好硬好湿我太爽了| 在线免费看av不卡| 老汉av免费一区二区三区 | 一本色道久久综合亚洲精品不| 国产成人久久婷婷精品流白浆| 欧美一区二区三区啪啪| 黄色污污视频在线观看| www国产91| 欧美调教在线| 成人在线观看av| 欧美日韩三级电影在线| 国产成人中文字幕| 电影一区二区三区久久免费观看| 亚洲天堂av在线免费| 亚洲精品一区av| 久久久噜噜噜久久中文字免| 欧美一区二区麻豆红桃视频| 蜜桃视频在线观看91| 亚洲色图在线看| 制服丝袜中文字幕在线观看| 欧美一区二区三区视频免费| 9色在线视频网站| 久久久影视精品| 奇米色欧美一区二区三区| 看欧美日韩国产| 日韩av在线播放中文字幕| 天堂av网在线| 欧美视频在线一区| 91精品久久久久久久蜜月| 在线观看av网| 欧美色精品在线视频| 亚洲理论电影| 中文字幕高清20页| 欧美国产成人精品| yellow91字幕网在线| 米奇精品一区二区三区在线观看| 日本黄在线观看| 国产欧美中文字幕| 亚洲网友自拍偷拍| 福利写真视频网站在线| 国产日本欧美一区| 国产午夜亚洲精品午夜鲁丝片| 国产一级激情| 不卡av在线播放| 国产欧美日韩激情| 日本中文视频| 国产一区二区在线免费| 伊人青青综合网站| 国产成人福利av| 精品视频高清无人区区二区三区| 国产毛片精品视频| 在线免费av网址| 亚洲欧美日韩区| 美女毛片一区二区三区四区| 日韩成人在线资源| 亚洲图片你懂的| 人人草在线视频| 日本久久久久久久| 电影天堂爱爱爱爱| 久久视频中文字幕| 超碰aⅴ人人做人人爽欧美| 3344国产精品免费看| 日韩精品一二三| 国产成人午夜电影| 亚洲精品一区久久久久久| 欧美人与牛zoz0性行为| 国产青草视频在线观看| 欧美午夜女人视频在线| 成人免费网站在线| 亚洲电影中文字幕| 久久综合影音| 国产亚洲人成a在线v网站| 亚洲午夜精品一区二区三区| 欧美视频三区在线播放| 美女扒开腿让男人桶爽久久动漫| 91pron在线| 中文乱码免费一区二区| 成人一级毛片| 精品国产麻豆免费人成网站| 黄色日韩精品| 色中色在线视频| av毛片在线播放| 精品深夜福利视频| 欧美亚洲日本| 精品免费日产一区一区三区免费| 中文幕av一区二区三区佐山爱| 亚洲高清乱码| 国产精品露脸自拍| 国产欧美日韩中文久久| 国产精品**亚洲精品| 午夜在线网站| 日本一区二区三区四区五区六区| 欧美一区二区大胆人体摄影专业网站| 在线视频中文字幕一区二区| 亚洲国产精品一区二区www| 黄色成人羞羞视频| 欧美午夜精品久久久久久浪潮| 久久国产精品亚洲人一区二区三区| 黄色的视频在线免费观看| jizzzz日本| 欧美成人精品激情在线观看 | 群体交乱之放荡娇妻一区二区| 成人偷拍自拍| 91日韩欧美| 午夜在线a亚洲v天堂网2018| 欧美电影免费网站| 蜜桃av在线播放| 在线观看涩涩| 国产在线天堂www网在线观看| 国外av在线| 蜜桃传媒在线| 黄色成人在线网| 欧美大片在线观看一区二区| 精品视频在线导航| 色大师av一区二区三区| 800av在线免费观看| 宅男午夜视频| 国产福利在线| 国产精品3区| а√天堂官网中文在线| 欧美第一精品| 亚洲综合电影一区二区三区| 日韩激情在线| 亚洲人成亚洲精品| 国产伦精品一区二区三区免费视频 | 亚洲精品在线免费| 日韩国产在线一区| 99精品视频网站| 国产黄色在线免费观看| 国产精品刘玥久久一区| 日本乱码一区二区三区不卡| 国产aⅴ精品一区二区四区| 91综合久久一区二区| 中文一区在线| 国产精品国色综合久久| 亚洲欧美日韩精品久久| 欧美视频在线免费| 精品乱人伦小说| 国产男人精品视频| 成人黄色av片| 波多野在线观看| 久久激情电影| 亚洲精品一卡二卡| 欧美国产在线电影| 91成人综合网| 国产精品天堂蜜av在线播放 | 秋霞在线观看av| 国产精品久久久网站 |