成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

觀察者設計模式—你瞅啥,瞅你咋地

開發 前端
觀察者模式,定義對象間一種一對多的依賴關系,使得每當一個對象改變狀態,則所有依賴于它的對象都會得到通知并自動更新,也叫做發布訂閱模式Publish/Subscribe,屬于行為型設計模式的一種。

最近比較煩,比較煩,比較煩,產品經理總把我為難。。。

最近在做一個線上培訓的項目,費了九牛二虎之力開發完了,這時產品經理笑嘻嘻的跑過來告訴我,那啥,改個需求,線上培訓的學員支持移除,移除了要把獲取到的相應學分扣除掉。我冷冷的看了她一眼,心想要不是看你是個女同志并且長得還行,天王老子來了也沒得商量。找到負責學分的同事A,加了一個扣除學分的接口,我這邊移除學員后調用他的接口,忙活半天,算是搞定了。

第二天,產品經理又笑嘻嘻的跑過來說,那啥,昨天跟你說的那個需求,不僅要扣除學分,還要標記缺勤。我尼瑪,你昨天咋不一起說,這不昨天沒想起來嘛,嘿嘿。沒辦法,又找到考勤的同事B,加了一個標記缺勤的接口,我這邊移除學員后調用他的接口,忙活半天,也算OK了。

第三天,產品經理又笑嘻嘻的跑過來說,那啥,昨天那個還得。。。

生氣歸生氣,需求總還是要實現的,這點基本的職業素養還是有的。

其實想一想,這算是一個比較典型的業務場景,當一個對象的改變需要同時改變其它對象,且它不知道具體有多少對象有待改變的時候,觀察者模式,是一個比較好的選擇。

觀察者模式,定義對象間一種一對多的依賴關系,使得每當一個對象改變狀態,則所有依賴于它的對象都會得到通知并自動更新,也叫做發布訂閱模式Publish/Subscribe,屬于行為型設計模式的一種。

上述的業務場景,移除學員是一個行為的發起者,同事A和B是行為的觀察者,當然可以根據你的業務場景增加同事C、D、E等等。當有移除學員的動作發生的時候,A進行相應的扣除學分操作,B進行相應的標記缺勤操作,C進行。。。

下面我們用代碼來實現產品經理小姐姐的變態需求。

1、定義行為觸發類

首先定義行為觸發的類,這個類中有一個行為移除學員的方法,當我們移除學員的時候調用這個方法。

然后可以定義它的實現類,重寫成員變更的方法,這個方法的實現邏輯無非就是通知跟它有關的對象:我要移除學員了。

那誰能收到通知呢?

2、新增觀察者

這里的觀察者就是上述場景中的同事A與同事B,他們都想要收到學員變更的通知。這里的實現很簡單,你要接收通知,把你的信息注冊過來,我這邊存儲一下,需要通知的時候,我把所有注冊者的信息拿出來,一一的進行通知;如果你不想接收通知了,注銷一下注冊信息,我把你的信息從存儲中刪掉,這樣再通知的時候,就不會通知你了。

回到代碼中,我們用一個list進行存儲所有注冊者的信息,list集合中是一個接口,要求所有觀察者都必須實現這個接口才能注冊進來,接口中會有指定的方法,所有觀察者也必須實現這個方法,這個方法就是各個觀察者在收到通知時要進行的操作,對應上述場景中,A同事更新學分,B同事標記缺勤等。這個接口可以自己定義,java也提供了Observer工具類供大家使用。代碼如下:

3、觀察者定義

這里觀察者的定義就比較簡單了,實現Observer接口,重寫update方法,在類初始化的時候把自己的信息注冊進去成為觀察者,就OK了。

4、測試

可以看到我們調用學員變更方法后,同事A和同事B都收到了通知,并執行了相應的操作。

責任編輯:姜華 來源: 今日頭條
相關推薦

2014-11-17 09:53:16

負載均衡

2020-10-26 08:45:39

觀察者模式

2021-07-08 11:28:43

觀察者模式設計

2013-11-26 17:09:57

Android設計模式

2022-01-29 22:12:35

前端模式觀察者

2024-02-18 12:36:09

2015-11-25 11:10:45

Javascript設計觀察

2024-07-04 13:29:06

2021-09-06 10:04:47

觀察者模式應用

2009-03-30 09:39:04

觀察者思想換位設計模式

2021-11-08 11:32:01

觀察

2021-06-07 20:03:04

監聽器模式觀察者

2021-01-25 05:38:04

設計原理VueSubject

2021-09-03 16:12:52

機器人人工智能編程

2011-04-29 09:22:22

2012-08-27 10:52:20

.NET架構觀察者模式

2021-03-29 07:14:28

Spring觀察者模式

2024-12-03 09:34:35

觀察者模 式編程Javav

2024-06-04 13:11:52

Python行為設計模式開發

2011-09-13 09:32:28

verizon云安全混合云
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久精品视频一区二区三区 | 国产精品嫩草影院精东 | 日韩欧美在线一区 | 一区二区三区 在线 | 一区二区三区韩国 | 久久久精| 成人性生交大片免费看中文带字幕 | 中文字幕亚洲一区 | 国产免费又黄又爽又刺激蜜月al | 无码一区二区三区视频 | 久久久精品天堂 | 久久中文字幕一区 | 99精品国产成人一区二区 | 日韩一区av | 毛片免费在线 | 亚洲欧美日韩中文字幕一区二区三区 | 国产激情一区二区三区 | 亚洲最大的成人网 | 亚洲精品国产a久久久久久 中文字幕一区二区三区四区五区 | 成年人黄色一级片 | 久久一区| 91av大全| 亚洲视频免费在线 | 免费观看黄色一级片 | 免费播放一级片 | 精品久久久久久久久久 | 欧美精品久久久 | 中文字幕第十页 | 超碰婷婷 | 超碰在线免费av | 日韩精品极品视频在线观看免费 | 亚洲国产小视频 | 亚洲精品美女在线观看 | 亚洲午夜精品在线观看 | 日本韩国电影免费观看 | 欧美激情精品久久久久久 | 免费观看一级特黄欧美大片 | 黄色成人在线观看 | 一区在线播放 | 国产三区四区 | 亚洲成av|