<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Observable(觀察者)設計模式

      前言

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

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

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

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

      例子

      在Observable設計模式中,一個對象在執行操作時會通知另一個對象。為了理解該模式的價值,讓我們想象一個需要單擊按鈕并且沒有通知另一個對象的場景,如圖1所示,ActionCheck 每秒檢查一次按鈕:
      image
      請注意,ActionCheck必須每秒檢查一次按鈕。現在,想象一下,如果我們每秒對該按鈕進行多次操作檢查。您能想象這會對您的應用程序性能產生什么影響嗎?
      讓Do Something按鈕通知ActionCheck.這樣,ActionCheck邏輯就不需要每秒輪詢Do Something按鈕。

      Observable設計模式的元素

      在下圖中,請注意觀察者模式的基礎是 Observer 接口(即觀察的對象)和 Subject(被觀察的對象)。類Newsletter implements Subject 和 Subscriber implements Observer。最后,SendEmailMain 是我們的主線程,它來觸發變化。如圖2所示
      image

      代碼

      Subject

      被觀察者的行為會被監聽,特殊行為會觸發事件

      public interface Subject {
      
         void addSubscriber(Observer observer);
         void removeSubscriber(Observer observer);
         void notifySubscribers();
      
      }
      

      Observer

      觀察者監聽到 Subject 的特殊行為,會做對應的邏輯處理

      public interface Observer {
      
         public void update(String email);
      
      }
      

      Newsletter(發布者)

      Newsletter 是 Subject 的實現類,它會存儲 Observer,當特殊行為發生時會通知 Observer

      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));
         }
      }
      

      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);
        }
      }
      

      SendEmailMain(測試用例)

      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");
       }
      
      }
      

      輸出如下
      image
      轉載:https://www.jianshu.com/p/77ed2c481fde

      posted @ 2024-10-08 09:46  先鋒之客  閱讀(81)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲男人天堂东京热加勒比| 亚洲首页一区任你躁xxxxx| 国产91精品丝袜美腿在线| 成人午夜av在线播放| 国产中文字幕在线一区| 天天躁夜夜躁天干天干2020| 策勒县| 熟妇人妻久久精品一区二区| gogo无码大胆啪啪艺术| 免费又大粗又爽又黄少妇毛片| 精品婷婷色一区二区三区| 成人国产精品一区二区网站公司| 含紧一点h边做边走动免费视频 | 亚洲欧美综合人成在线| 亚洲中文字幕精品久久| 国内自拍偷拍福利视频看看 | 亚欧乱色精品免费观看| 潮喷失禁大喷水av无码| 性色在线视频精品| 久久精品亚洲精品国产色婷| 欧美寡妇xxxx黑人猛交| 蜜桃一区二区三区免费看| 会东县| 中文字幕亚洲国产精品| 国产在线视频导航| 香港日本三级亚洲三级| 亚洲男人的天堂av手机在线观看| 国产精品一区二区三区自拍| 日本边添边摸边做边爱喷水| 亚洲爆乳WWW无码专区| 一区二区三区四区激情视频| 亚洲色最新高清AV网站| 久久国产精品不只是精品| 国产不卡精品视频男人的天堂| 久久毛片少妇高潮| 超碰成人人人做人人爽| 亚洲综合色一区二区三区| 亚洲成熟女人毛毛耸耸多| 色爱区综合激情五月激情| 色婷婷综合久久久久中文字幕| 国产女人18毛片水真多1|