最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

第20章觀察者模式

2022-02-20 20:58 作者:取悅疾風(fēng)  | 我要投稿

內(nèi)容來自尚硅谷Java設(shè)計(jì)模式(圖解+框架源碼剖析)_嗶哩嗶哩_bilibili

寫在前面:本文內(nèi)容大致和原視頻內(nèi)老師的筆記內(nèi)容相同,會(huì)偶爾插入自己的注釋和理解,盡量會(huì)完成作業(yè)

兄弟們!學(xué)就完事了!加油!奧里給!

第20章觀察者模式

20.1天氣預(yù)報(bào)項(xiàng)目需求,具體要求如下

1)????? 氣象站可以將每天測(cè)量到的溫度,濕度,氣壓等等以公告的形式發(fā)布出去(比如發(fā)布到自己的網(wǎng)站或第三方)。需要設(shè)計(jì)開放型API,便于其他第三方也能接入氣象站獲取數(shù)據(jù)。

2)????? 提供溫度、氣壓和濕度的接口

3)????? 測(cè)量數(shù)據(jù)更新時(shí),要能實(shí)時(shí)的通知給第三方

?

20.2天氣預(yù)報(bào)設(shè)計(jì)方案 1-普通方案

20.2.1WeatherData類

傳統(tǒng)的設(shè)計(jì)方案

代碼實(shí)現(xiàn)

?? 問題分析

其他第三方接入氣象站獲取數(shù)據(jù)的問題

無法在運(yùn)行時(shí)動(dòng)態(tài)的添加第三方(新浪網(wǎng)站)

違反ocp原則->觀察者模式

在WeatherData中,當(dāng)增加一個(gè)第三方,都需要?jiǎng)?chuàng)建一個(gè)對(duì)應(yīng)的第三方的公告板對(duì)象,并加入到dataChange,不利于維護(hù),也不是動(dòng)態(tài)加入

public void dataChange(){

??????? //調(diào)用接入方的update方法

??????? currentConditions.update(getTemperature(),getPressure(),getHumidity());

}

?

20.3觀察者模式的基本原理

1)????? 觀察者模式類似訂牛奶業(yè)務(wù)

2)????? 奶站/氣象局:Subject

3)????? 用戶/第三方網(wǎng)站:Observer

?? Subject:登記注冊(cè)、移除和通知

1)????? registerObserver注冊(cè)

2)????? removeObserver移除

3)????? notifyObservers()通知所有的注冊(cè)的用戶,根據(jù)不同需求,可以是更新數(shù)據(jù),讓用戶來取,也可能是實(shí)施推送,看具體需求定

?? Observer:接收輸入

?? 觀察者模式:對(duì)象之間多對(duì)一依賴的一種設(shè)計(jì)方案,被依賴的對(duì)象為Subject,依賴的對(duì)象為Observer,Subject通知Observer變化,比如這里的奶站是Subject,是1的一方。用戶時(shí)Observer,是多的一方。

20.4觀察者模式解決天氣預(yù)報(bào)需求

20.4.1類圖說明

20.4.2代碼實(shí)現(xiàn)

20.4.3觀察者模式的好處

1)????? 觀察者模式設(shè)計(jì)后,會(huì)以集合的方式來管理用戶(Observer),包括注冊(cè),移除和通知。

2)????? 這樣,我們?cè)黾佑^察者(這里可以理解成一個(gè)新的公告板),就不需要去修改核心類WeatherData不會(huì)修改代碼,遵守了ocp原則。

20.5觀察者模式在Jdk應(yīng)用的源碼分析

1)????? Jdk的 Observable類就使用了觀察者模式

2)????? 代碼分析+模式角色分析

Observable的作用和地位等價(jià)于我們前面講過Subject

Observable是類,不是接口,類中已經(jīng)實(shí)現(xiàn)了核心的方法 ,即管理Observer的方法 add..delete ..notify...

Observer 的作用和地位等價(jià)于我們前面講過的Observer,有update

Observable 和Observer的使用方法和前面講過的一樣,只是Observable是類,通過繼承來實(shí)現(xiàn)觀察者模式


第20章觀察者模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
资中县| 宁南县| 洛扎县| 阿巴嘎旗| 茶陵县| 龙海市| 封开县| 通海县| 剑河县| 阳西县| 海阳市| 贵州省| 壤塘县| 南城县| 远安县| 准格尔旗| 扶风县| 西华县| 巴彦淖尔市| 南漳县| 青冈县| 慈溪市| 延长县| 莆田市| 临泉县| 徐汇区| 丰镇市| 邛崃市| 吴江市| 汾西县| 荥阳市| 汉阴县| 松溪县| 合肥市| 出国| 九江县| 泊头市| 永修县| 盱眙县| 若羌县| 镇赉县|