国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入理解設(shè)計模式-行為型之觀察者

這篇具有很好參考價值的文章主要介紹了深入理解設(shè)計模式-行為型之觀察者。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

觀察者模式(Observer Pattern)是一種行為型設(shè)計模式,它定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽一個主題對象,當主題對象發(fā)生變化時,所有依賴于它的觀察者對象都會得到通知并更新。

在觀察者模式中,有兩個主要角色:

  • Subject(主題):維護一個觀察者列表,提供方法用于添加、刪除和通知觀察者。
  • Observer(觀察者):定義一個接口,用于接收主題對象的通知,以便在主題發(fā)生變化時更新自身狀態(tài)。

電商系統(tǒng)的應(yīng)用

促銷通知的例子:
假設(shè)我們有一個電商系統(tǒng),當某件商品有促銷活動時,需要通知所有訂閱了該商品的用戶。在這個例子中,商品是主題,用戶是觀察者

首先,我們創(chuàng)建一個Subject接口,表示主題:

public interface Subject {
    void registerObserver(Observer o);//添加
    void removeObserver(Observer o);//刪除
    void notifyObservers();//通知
}

接下來,我們創(chuàng)建一個Observer接口,表示觀察者:

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

現(xiàn)在,我們創(chuàng)建一個具體的主題,如Product,實現(xiàn)Subject接口:

public class Product implements Subject {
    private ArrayList<Observer> observers;
    
    // 折扣消息
    private String discountInfo;
    public Product() {
        observers = new ArrayList<>();
   }
    public void registerObserver(Observer o) {
        observers.add(o);
   }
    public void removeObserver(Observer o) {
        int index = observers.indexOf(o);
        if (index >= 0) {
            observers.remove(index);
       }
   }
    public void notifyObservers() {
        for (Observer o : observers) {
            o.update(discountInfo);
       }
   }
    public void discountChanged() {
        notifyObservers();
   }
    public void setDiscountInfo(String discountInfo) {
        this.discountInfo = discountInfo;
        discountChanged();
   }
}

接著,我們創(chuàng)建一個具體的觀察者,如User,實現(xiàn)Observer接口:

public class User implements Observer {
    private String userName;
    private String discountInfo;
    private Subject product;
    public User(String userName, Subject product) {
        this.userName = userName;
        this.product = product;
        product.registerObserver(this);
   }
    public void update(String discountInfo) {
        this.discountInfo = discountInfo;
        display();
   }
    public void display() {
        System.out.println("用戶 " + userName + " 收到促銷通知: " + discountInfo);
   }
}

2個接口,2個具體的類。
現(xiàn)在我們可以創(chuàng)建一個Product實例(主題)并向其注冊User觀察者。當Product的促銷信息發(fā)生變化時,User會收到通知并顯示促銷信息。

public class Main {
    public static void main(String[] args) {
 	  	//注冊2個用戶
        User user1 = new User("張三", product);
        User user2 = new User("李四", product);
        // 模擬商品促銷信息更新
  		   Product product = new Product();
        product.setDiscountInfo("本周末滿100減50");
        product.setDiscountInfo("雙十一全場5折");
   }
}

在這個例子中,我們創(chuàng)建了一個Product實例并向其注冊了兩個User觀察者。當Product的促銷信息發(fā)生變化時,所有觀察者都會收到通知并更新自己的顯示。這個例子展示了觀察者模式在電商系統(tǒng)中的應(yīng)用,如何實現(xiàn)商品和用戶之間的交互。

源碼應(yīng)用

觀察者模式在許多Java框架和庫中都有應(yīng)用,以下是一些常見的示例:

  • Java 內(nèi)置類庫:Java內(nèi)置了一些使用觀察者模式的類,例如 java.util.Observable 和 java.util.Observer。雖然在較新的Java版本中已經(jīng)不推薦使用,但它們?nèi)匀皇怯^察者模式的一個例子。你可以通過擴展 Observable 類并實現(xiàn) Observer 接口來創(chuàng)建自己的觀察者模式。

  • Swing GUI 框架:Swing中的事件監(jiān)聽就是觀察者模式的應(yīng)用。比如,你可以為按鈕添加動作監(jiān)聽器,當按鈕被點擊時,監(jiān)聽器會收到通知并執(zhí)行相應(yīng)的操作。

  • Spring Framework:Spring框架廣泛使用觀察者模式,特別是在事件驅(qū)動編程中。例如,Spring的事件機制允許你在應(yīng)用中發(fā)布和監(jiān)聽事件,當某些事件發(fā)生時,注冊的監(jiān)聽器會收到通知并執(zhí)行相應(yīng)的邏輯。

  • Android開發(fā):Android中的事件處理也是觀察者模式的應(yīng)用,例如,你可以為按鈕添加點擊事件監(jiān)聽器,當按鈕被點擊時,監(jiān)聽器會收到通知。

這些只是一些例子,觀察者模式在許多框架和應(yīng)用中都有廣泛的應(yīng)用。它提供了一種松耦合的方式,允許不同部分的代碼能夠在發(fā)生變化時保持同步,從而實現(xiàn)更加靈活和可維護的程序。文章來源地址http://www.zghlxwxcb.cn/news/detail-651617.html

到了這里,關(guān)于深入理解設(shè)計模式-行為型之觀察者的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 設(shè)計模式(十四):行為型之策略模式

    設(shè)計模式(十四):行為型之策略模式

    設(shè)計模式系列文章 設(shè)計模式(一):創(chuàng)建型之單例模式 設(shè)計模式(二、三):創(chuàng)建型之工廠方法和抽象工廠模式 設(shè)計模式(四):創(chuàng)建型之原型模式 設(shè)計模式(五):創(chuàng)建型之建造者模式 設(shè)計模式(六):結(jié)構(gòu)型之代理模式 設(shè)計模式(七):結(jié)構(gòu)型之適配器模式 設(shè)計模式(八):結(jié)構(gòu)型之裝

    2024年02月09日
    瀏覽(26)
  • 【Java 設(shè)計模式】行為型之狀態(tài)模式

    狀態(tài)模式(State Pattern)是一種行為型設(shè)計模式,用于通過將對象的行為封裝到不同的狀態(tài)類中,使得對象在不同的狀態(tài)下具有不同的行為。狀態(tài)模式允許對象在內(nèi)部狀態(tài)發(fā)生改變時改變其行為,而無需修改其代碼。在本文中,我們將深入研究Java中狀態(tài)模式的定義、結(jié)構(gòu)、使

    2024年01月24日
    瀏覽(24)
  • 【Java 設(shè)計模式】行為型之命令模式

    命令模式(Command Pattern)是一種行為型設(shè)計模式,用于將請求封裝為對象,使得可以參數(shù)化客戶端對象,并且能夠排隊、記錄請求,以及支持撤銷操作。在本文中,我們將深入研究Java中命令模式的定義、結(jié)構(gòu)、使用場景以及如何在實際開發(fā)中應(yīng)用。 命令模式是一種行為型設(shè)

    2024年01月23日
    瀏覽(27)
  • 設(shè)計模式(十三):行為型之模板方法模式

    設(shè)計模式(十三):行為型之模板方法模式

    設(shè)計模式系列文章 設(shè)計模式(一):創(chuàng)建型之單例模式 設(shè)計模式(二、三):創(chuàng)建型之工廠方法和抽象工廠模式 設(shè)計模式(四):創(chuàng)建型之原型模式 設(shè)計模式(五):創(chuàng)建型之建造者模式 設(shè)計模式(六):結(jié)構(gòu)型之代理模式 設(shè)計模式(七):結(jié)構(gòu)型之適配器模式 設(shè)計模式(八):結(jié)構(gòu)型之裝

    2024年02月08日
    瀏覽(24)
  • 設(shè)計模式(二十):行為型之迭代器模式

    設(shè)計模式(二十):行為型之迭代器模式

    設(shè)計模式系列文章 設(shè)計模式(一):創(chuàng)建型之單例模式 設(shè)計模式(二、三):創(chuàng)建型之工廠方法和抽象工廠模式 設(shè)計模式(四):創(chuàng)建型之原型模式 設(shè)計模式(五):創(chuàng)建型之建造者模式 設(shè)計模式(六):結(jié)構(gòu)型之代理模式 設(shè)計模式(七):結(jié)構(gòu)型之適配器模式 設(shè)計模式(八):結(jié)構(gòu)型之裝

    2024年02月09日
    瀏覽(20)
  • 【Java 設(shè)計模式】行為型之責任鏈模式

    責任鏈模式(Chain of Responsibility Pattern)是一種行為型設(shè)計模式,用于將請求發(fā)送者和接收者解耦,使得多個對象都有機會處理請求。責任鏈模式通過創(chuàng)建一個處理請求的鏈,將請求沿著鏈傳遞,直到有一個對象能夠處理為止。在本文中,我們將深入研究Java中責任鏈模式的定

    2024年01月24日
    瀏覽(23)
  • 設(shè)計模式:行為型模式 - 觀察者模式

    設(shè)計模式:行為型模式 - 觀察者模式

    定義: 又被稱為發(fā)布-訂閱(Publish/Subscribe)模式,它定義了一種一對多的依賴關(guān)系,讓多個觀察者對象同時監(jiān)聽某一個主題對象。這個主題對象在狀態(tài)變化時,會通知所有的觀察者對象,使他們能夠自動更新自己。 在觀察者模式中有如下角色: Subject:抽象主題(抽象被觀察

    2023年04月22日
    瀏覽(29)
  • 行為型設(shè)計模式之觀察者模式【設(shè)計模式系列】

    行為型設(shè)計模式之觀察者模式【設(shè)計模式系列】

    C++技能系列 Linux通信架構(gòu)系列 C++高性能優(yōu)化編程系列 深入理解軟件架構(gòu)設(shè)計系列 高級C++并發(fā)線程編程 設(shè)計模式系列 期待你的關(guān)注哦!??! 現(xiàn)在的一切都是為將來的夢想編織翅膀,讓夢想在現(xiàn)實中展翅高飛。 Now everything is for the future of dream weaving wings, let the dream fly in reali

    2024年02月15日
    瀏覽(19)
  • 設(shè)計模式【行為型】-- 觀察者模式

    觀察者模式(Observer Pattern)是一種行為型設(shè)計模式,用于在對象之間建立一種一對多的依賴關(guān)系,使得當一個對象狀態(tài)改變時,其相關(guān)依賴對象都能得到通知并自動更新。 主題( Subject ):也稱為被觀察者,它維護一個觀察者列表,并提供添加、刪除和通知觀察者的方法。

    2024年02月15日
    瀏覽(27)
  • 設(shè)計模式行為型——觀察者模式

    設(shè)計模式行為型——觀察者模式

    目錄 觀察者模式的定義 觀察者模式的實現(xiàn) 觀察者模式角色 觀察者模式類圖 觀察者模式代碼實現(xiàn) 觀察者模式的特點 優(yōu)點 缺點 使用場景 注意事項 實際應(yīng)用 ????????觀察者模式(Observer Pattern)是一種行為型設(shè)計模式,它定義了一種一對多的依賴關(guān)系,使得當一個對象的

    2024年02月13日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包