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

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

這篇具有很好參考價(jià)值的文章主要介紹了設(shè)計(jì)模式—行為型模式之觀察者模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

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

觀察者模式(Observer Pattern):定義對(duì)象間的一種一對(duì)多依賴關(guān)系,使得每當(dāng)一個(gè)對(duì)象狀態(tài)發(fā)生改變時(shí),其相關(guān)依賴對(duì)象皆得到通知并被自動(dòng)更新。觀察者模式又叫做發(fā)布-訂閱(Publish/Subscribe)模式、模型-視圖(Model/View)模式、源-監(jiān)聽(tīng)器(Source/Listener)模式或從屬者(Dependents)模式。這是一種對(duì)象行為型模式。

觀察者模式有如下角色:

  • Subject: 目標(biāo)

  • ConcreteSubject: 具體目標(biāo)

  • Observer: 觀察者

  • ConcreteObserver: 具體觀察者

示例

比如現(xiàn)在大火的主播,可以直播賣貨,直播賣貨時(shí)可以通知給粉絲,結(jié)束賣貨時(shí)也可以通知給粉絲。我們可以在主播中維護(hù)一個(gè)粉絲的列表,來(lái)進(jìn)行通知。

代碼如下:

/**
 * 抽象主播類
 */
public abstract class AbstarctAnchor {

    //添加粉絲
    abstract void addFans(AbstarctFans fans);

    //通知粉絲
    abstract void notifyFans(String msg);

}

/**
抽象粉絲類
 */
public abstract class AbstarctFans {

    //接收消息
    abstract void acceptMsg(String msg);

    //關(guān)注主播
    public void follow(AbstarctAnchor anchor){
        anchor.addFans(this);
    }
}

賣奧特曼的主播為:

/**
 * 賣奧特曼的主播
 */
@Slf4j
public class SellingUltramanAnchor extends AbstarctAnchor{

    //粉絲列表
    private List<AbstarctFans> fansList = new ArrayList<>();


    //賣奧特曼
    public void selling(){
        log.info("我是賣奧特曼的主播,我來(lái)賣奧特曼了....");
        //通知粉絲
        notifyFans("主播來(lái)賣貨了");
    }

    //結(jié)束賣奧特曼
    public void end(){
        log.info("奧特曼賣沒(méi)了....");
        //通知粉絲
        notifyFans("主播結(jié)束賣貨了");
    }

    @Override
    void addFans(AbstarctFans fans) {
        fansList.add(fans);
    }

    @Override
    void notifyFans(String msg) {
        //獲取所有粉絲進(jìn)行通知
        for (AbstarctFans abstarctFans : fansList) {
            abstarctFans.acceptMsg(msg);
        }
    }
}

忠實(shí)粉絲和黑粉類如下

/**
 * 忠實(shí)粉絲
 */
@Slf4j
public class LoyalFans extends AbstarctFans{
    @Override
    void acceptMsg(String msg) {
        log.info("賣奧特曼的主播來(lái)了,他說(shuō):"+msg);
    }
}
/**
 * 黑粉
 */
@Slf4j
public class AntiFan extends AbstarctFans{
    @Override
    void acceptMsg(String msg) {
        log.info("這個(gè)賣奧特曼的主播賣的奧特曼不會(huì)發(fā)光,別買?。?!");
    }
}

測(cè)試類如下

public class ObserverTest {
    public static void main(String[] args) {
        //賣奧特曼的主播對(duì)象
        SellingUltramanAnchor anchor = new SellingUltramanAnchor();
        //忠實(shí)粉絲1
        AbstarctFans loyalFans1 = new LoyalFans();
        loyalFans1.follow(anchor);
        //忠實(shí)粉絲2
        AbstarctFans loyalFans2 = new LoyalFans();
        loyalFans2.follow(anchor);

        //黑粉
        AbstarctFans antiFan = new AntiFan();
        antiFan.follow(anchor);

        //開(kāi)播
        anchor.selling();
        //結(jié)束直播
        anchor.end();
    }
}

運(yùn)行結(jié)果如下:

設(shè)計(jì)模式—行為型模式之觀察者模式,設(shè)計(jì)模式,設(shè)計(jì)模式,觀察者模式,java文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-815200.html

到了這里,關(guān)于設(shè)計(jì)模式—行為型模式之觀察者模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

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

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

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

    2024年02月15日
    瀏覽(19)
  • 笨蛋學(xué)設(shè)計(jì)模式行為型模式-觀察者模式【14】

    8.1.1概念 ? 觀察者模式定義了一種一對(duì)多的依賴關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,當(dāng)主題對(duì)象狀態(tài)發(fā)生變化時(shí),會(huì)通知所有依賴它的觀察者對(duì)象,使它們都能夠得到通知并且被自動(dòng)更新 8.1.2場(chǎng)景 ? 在我們生活中,用戶可以在音樂(lè)播放平臺(tái)關(guān)注多個(gè)歌手,而

    2024年01月24日
    瀏覽(27)
  • c#設(shè)計(jì)模式-行為型模式 之 觀察者模式

    c#設(shè)計(jì)模式-行為型模式 之 觀察者模式

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

    2024年02月14日
    瀏覽(22)
  • C++設(shè)計(jì)模式行為型之觀察者模式

    一、 概述 ????????觀察者模式定義對(duì)象間的一種一對(duì)多的依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。 二、 示例代碼 #include list class Subject; class Observer { public: ?? ?virtual ~Observer(); ?? ?virtual void Update(Subject* theChangedSubject) =

    2024年02月14日
    瀏覽(27)
  • 深入理解設(shè)計(jì)模式-行為型之觀察者

    觀察者模式(Observer Pattern)是一種行為型設(shè)計(jì)模式,它定義了一種 一對(duì)多的依賴關(guān)系 ,讓 多個(gè)觀察者對(duì)象 同時(shí)監(jiān)聽(tīng)一個(gè) 主題對(duì)象 ,當(dāng) 主題對(duì)象 發(fā)生 變化 時(shí),所有依賴于它的 觀察者 對(duì)象都會(huì)得到 通知并更新。 在觀察者模式中,有兩個(gè)主要角色: Subject(主題):維護(hù)

    2024年02月12日
    瀏覽(25)
  • Java 設(shè)計(jì)模式——觀察者模式

    Java 設(shè)計(jì)模式——觀察者模式

    觀察者模式 (Observer Pattern) 是一種行為型設(shè)計(jì)模式,又被稱為發(fā)布-訂閱 (Publish/Subscribe) 模式, 它定義了對(duì)象之間的一種一對(duì)多的依賴關(guān)系,使得當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生變化時(shí),所有依賴于它的對(duì)象都會(huì)自動(dòng)收到通知并更新 。 在觀察者模式中有如下角色: Subject:觀察對(duì)象 ,

    2024年02月16日
    瀏覽(23)
  • java設(shè)計(jì)模式-觀察者模式

    java設(shè)計(jì)模式-觀察者模式

    觀察者模式(Observer)是軟件設(shè)計(jì)中的一種行為模式。 它定義了對(duì)象之間的一對(duì)多關(guān)系,其中如果一個(gè)對(duì)象改變了狀態(tài),所有依賴它的對(duì)象都會(huì)自動(dòng)被通知并更新。 這種模式包含了兩種主要的角色,即被觀察者(Subject)和觀察者(Observer)。 被觀察者維護(hù)了一個(gè)觀察者列表

    2024年02月15日
    瀏覽(21)
  • java設(shè)計(jì)模式(二十)觀察者模式

    java設(shè)計(jì)模式(二十)觀察者模式

    觀察者模式 又叫發(fā)布訂閱模式(Publish/Subscribe),它定義了一種一對(duì)多的關(guān)系,讓多個(gè)觀察者對(duì)象同時(shí)監(jiān)聽(tīng)某一個(gè)主題對(duì)象,這個(gè)主題對(duì)象的狀態(tài)發(fā)生變化時(shí)就會(huì)通知所有的觀察者對(duì)象,使得它們能夠自動(dòng)更新自己。 1.抽象目標(biāo)類(Subject) :它用一個(gè)列表記錄當(dāng)前目標(biāo)對(duì)象

    2024年02月08日
    瀏覽(19)
  • Java觀察者設(shè)計(jì)模式

    觀察者模式,定義了對(duì)象之間的一對(duì)多依賴關(guān)系,當(dāng)一個(gè)對(duì)象的狀態(tài)發(fā)生改變時(shí),所有依賴于它的對(duì)象都得到通知并被自動(dòng)更新。在Java中,觀察者模式通常由兩個(gè)接口組成:Subject和Observer。Subject是被觀察的對(duì)象,Observer是觀察者。Subject接口定義了一系列方法,用于添加、刪

    2024年02月16日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包