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

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

游戲編程模式-觀察者模式與發(fā)報(bào)訂閱模式

2022-06-09 15:41 作者:YONCE1999  | 我要投稿

觀察者模式

所謂觀察者模式,主要目的是為了松耦合,舉一個(gè)例子說(shuō)明,當(dāng)玩家擊殺怪物后可以獲得對(duì)應(yīng)的獎(jiǎng)勵(lì),那么玩家需要關(guān)注怪物死亡這一事件,每當(dāng)怪物死亡的時(shí)候,玩家獲得獎(jiǎng)勵(lì)的方法就會(huì)被調(diào)用,玩家需要時(shí)刻關(guān)注所有的潛在的可能被擊殺的怪物,非常的不方便,同時(shí)如果怪物的腳本出現(xiàn)了問(wèn)題也可能影響到玩家的正常操控。我們希望的是,當(dāng)怪物死亡的時(shí)候才讓玩家知道“怪物已經(jīng)死亡了”這個(gè)消息,就好比我網(wǎng)購(gòu)了某樣?xùn)|西,我并不關(guān)心貨物是怎么送過(guò)來(lái),只需要送到之后告訴我“快遞到了”這個(gè)消息,然后我就會(huì)執(zhí)行取快遞這個(gè)行為。這樣就把我和送快遞的流程隔開(kāi)了。

觀察者模式

在上述的例子中,我就是觀察者,快遞員就是被觀察者,快遞員送到快遞之后就會(huì)通知我,然后我執(zhí)行我的取快遞方法。

發(fā)布訂閱模式

大多數(shù)情況下可以將發(fā)布訂閱模式里的Publisher,理解為觀察者模式里的Subject,而Subscriber,就是Observer。區(qū)別在于Publisher變化時(shí),并不會(huì)主動(dòng)去通知Subscriber。還是用送快遞方式來(lái)舉例,當(dāng)快遞業(yè)務(wù)達(dá)到一定量的時(shí)候,快遞員數(shù)量不夠,送貨上門(mén)效率就會(huì)變低,這個(gè)時(shí)候就引入了菜鳥(niǎo)驛站的概念,快遞員把貨物送到菜鳥(niǎo)驛站,顧客去菜鳥(niǎo)驛站取貨,兩者并不直接接觸,而是通過(guò)中轉(zhuǎn)站也就是Broker。

發(fā)布訂閱模式

快遞員告訴菜鳥(niǎo)驛站XXX的快遞到了,菜鳥(niǎo)驛站轉(zhuǎn)述給XXX:你的貨物到了自取,XXX來(lái)到菜鳥(niǎo)驛站:我要取XXX的快遞。發(fā)布訂閱模式里,發(fā)布者和訂閱者,不是松耦合,而是完全解耦的。從本質(zhì)上來(lái)說(shuō)發(fā)布者和訂閱者分別和Broker也是松耦的,但是解耦出來(lái)的broker里可以做得更多. 比如:在里面分別對(duì)發(fā)布者和訂閱這使用職責(zé)鏈模式進(jìn)行執(zhí)行順序調(diào)整和過(guò)濾,以及設(shè)置整個(gè)鏈條的終止條件等很多邏輯.

當(dāng)然采用哪種方式其實(shí)和快遞的多少并沒(méi)有直接的聯(lián)系,需要從發(fā)送消息的對(duì)象和接受消息的對(duì)象做判斷,例如 端午節(jié)公司發(fā)粽子,這件事是由行政部門(mén)決定的,公司員工和行政部門(mén)同處于公司一個(gè)主體下面,這件事不方便交給第三方做,需要親手交到員工手上,也就是觀察者模式。對(duì)于送快遞來(lái)說(shuō),顧客與快遞員并沒(méi)有直接聯(lián)系,也不希望產(chǎn)生過(guò)多的糾紛,那么中轉(zhuǎn)站的存在就是合理的。

用C#寫(xiě)一個(gè)簡(jiǎn)單的事件處理中心,代碼如下

根據(jù)事件的需求,重載不同數(shù)量的參數(shù)嗎(action最多四個(gè)參數(shù)),這是一個(gè)簡(jiǎn)單地事件中心的實(shí)現(xiàn)。

游戲編程模式-觀察者模式與發(fā)報(bào)訂閱模式的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
衢州市| 伊宁市| 东莞市| 兖州市| 滕州市| 卢湾区| 新蔡县| 黔东| 比如县| 田东县| 西盟| 西峡县| 麟游县| 尚志市| 福鼎市| 浠水县| 清水县| 三江| 昌平区| 庆城县| 桦甸市| 宁明县| 永泰县| 云南省| 定日县| 定南县| 南江县| 平邑县| 沙河市| 团风县| 巩义市| 黄大仙区| 灯塔市| 本溪市| 泾源县| 安福县| 武穴市| 金门县| 德化县| 苏尼特左旗| 同心县|