第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定

觀察者模式

GerryZhang JAVA開發(fā)工程師
難度中級
時長 1小時56分
學(xué)習(xí)人數(shù)
綜合評分9.53
113人評價 查看評價
9.7 內(nèi)容實用
9.6 簡潔易懂
9.3 邏輯清晰
  • 基本骨架:

    Subject

    abstract?class?Subject?{
    ????private?List<Observer>?observerList?=?new?ArrayList<>();
    ????
    ????public?void?attach(Observer?o){observerList.add(o);}
    ????public?void?detach(Observer?o){observerList.remove(o);}
    ????public?void?inform(){observerList.forEach(o?->?o.update(this));}
    }

    Observer

    interface?Observer?{
    ????void?update(Subject?subject);
    }


    簡單模擬實現(xiàn):

    具體事物

    class?ConstructSubject?extends?Subject?{
    ????private?String?status;
    ????
    ????public?String?getStatus(){return?status;}
    ????
    ????public?void?setStatus(String?status){
    ????????this.status?=?status;
    ????????this.inform();?//?事物發(fā)生變化,通知更新
    ????}
    }


    觀察者實現(xiàn)

    class?ConstructObserver?implements?Observer?{
    ????String?status;
    
    ????@Override
    ????public?void?update(Subject?subject)?{
    ????????this.status?=?((ConstructSubject)subject).getStatus();
    ????}
    }

    總結(jié):Subject在設(shè)計模式中占主動地位,Observer可輔助Subject進行額外功能處理

    查看全部
  • Subject : 觀察源事物,可添加或刪除自身觀察者

    Observer : 觀察者,可接受事物的通知

    當事物發(fā)生更新變動,則通知觀察者做相應(yīng)處理,另事物狀態(tài)與觀察者狀態(tài)保持一致

    查看全部
  • 創(chuàng)建、注冊階段

    查看全部
  • 客戶端操作

    查看全部
  • 觀察者實現(xiàn)的兩種模式:

    https://img1.sycdn.imooc.com//5afdfb420001064505430200.jpg

    https://img1.sycdn.imooc.com//5afdfa6c0001b41905970322.jpg

    區(qū)別:

    1. 推模型假定目標知道觀察者需要的數(shù)據(jù)

    2. 拉模型不知道目標對象需要什么數(shù)據(jù),把自身傳遞給觀察者,由觀察者取值

    3. 推模型使觀察者對象復(fù)用性比較差

    查看全部
  • 使用觀察者模式的情況

    查看全部
  • 適用情況:

    查看全部
  • 優(yōu)點: 1,觀察者模式實現(xiàn)了觀察者和目標之間的抽象耦合; 2,觀察者模式實現(xiàn)了動態(tài)聯(lián)動 3,觀察者模式支持廣播通信 缺點: 可能會引起無謂的操作---->引起誤更新

    查看全部
  • Observable類的notifyObservers()方法只支持拉的方式,而另一個重載方法notifyObservers(Object content)方法兩種方式(推的方式和拉的方式)都支持,所以在第二個時兩種都生效

    查看全部
  • Java實現(xiàn)與自己實現(xiàn)的對比:

    查看全部
  • 利用Java提供的觀察者模式:

    java.util.Observable類和java.util.Observer接口


    Java實現(xiàn)與自己實現(xiàn)的對比:

    查看全部
  • 觀察者模型的實現(xiàn)方式:

    一、推模型

    ? ? 目標對象主動向觀察者推送目標的詳細信息,推送的信息通常是目標對象的全部或部分數(shù)據(jù)


    二、拉模型

    ? ? 目標對象在通知觀察者的時候,只傳遞少量信息。

    ? ? 若觀察者需要更具體的信息,由觀察者主動到目標對象中獲取,相當于觀察者從目標對象中拉數(shù)據(jù)。

    ? ? 一般會把目標對象自身通過update方法傳遞到觀察者


    比較:

    1、推模型是假定目標對象知道觀察者需要的數(shù)據(jù);拉模型不知道observer需要什么數(shù)據(jù),因此把自身傳給observer,由觀察者來取值

    2、推模型使observer對象難以復(fù)用,拉模型傳遞的是目標對象本身,滿足各種需要


    查看全部
  • 認識觀察者模式:

    1、目標與觀察者之間的關(guān)系

    ? ?一對一、一對多、多對一(觀察者需要定義多個update方法用于區(qū)分)


    2、單項依賴

    ? ?觀察者依賴目標,觀察者一直在等待目標的通知


    3、命名建議

    ? ?觀察者模式又被稱為發(fā)布訂閱模式

    ? ?①目標接口的定義,名稱加Subject后綴

    ? ?②觀察者接口的定義,名稱加Observer后綴

    ? ?③觀察者接口的更新方法,名稱為update


    4、觸發(fā)通知的時機

    ? ?先修改狀態(tài)再通知,否則會導(dǎo)致狀態(tài)不一致


    5、觀察者模式的調(diào)用順序示意圖

    ? ?①準備階段

    創(chuàng)建目標對象-》創(chuàng)建觀察者對象-》向目標對象注冊觀察者對象

    ? ?②運行階段

    改變目標對象的狀態(tài)-》通知所有注冊的觀察者對象進行相應(yīng)的處理-》回調(diào)目標對象,獲取相應(yīng)的數(shù)據(jù)


    6、通知的順序

    ? ?多個觀察者之間是沒有先后順序的


    查看全部
  • 通用代碼:

    查看全部
  • 觀察者模式的設(shè)計圖

    查看全部

舉報

0/150
提交
取消
課程須知
學(xué)習(xí)本課程前,需要具備Java基礎(chǔ),面向?qū)ο蟮某绦蛟O(shè)計思想。如果對這些知識不熟悉,可以學(xué)習(xí)《Java入門第一季》和《Java入門第二季》這兩門課程。
老師告訴你能學(xué)到什么?
1、理解觀察者模式的概念和結(jié)構(gòu) 2、掌握如何將觀察者模式應(yīng)用到項目中,解決項目實際問題 3、掌握觀察者模式的應(yīng)用場景

微信掃碼,參與3人拼團

微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對慕課網(wǎng)的支持!