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

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

《游戲編程模式》筆記——組件模式

2023-09-17 17:57 作者:黑白色的楓  | 我要投稿

意圖

允許單一的實(shí)體跨越多個領(lǐng)域而不會導(dǎo)致這些領(lǐng)域彼此耦合。

模式

單一實(shí)體跨越了多個領(lǐng)域。為了保持領(lǐng)域之間相互分離,將每部分代碼放入各自的組件類中。實(shí)體被簡化為組件的容器。

何時使用

  1. 有一個涉及了多個領(lǐng)域的類,而你想保持這些領(lǐng)域相互隔離。

  2. 一個類正在變大而且越來越難以使用。

  3. 想要能定義一系列分享不同能力的類,但是使用繼承無法讓你精確選取重要的部分。

設(shè)計(jì)決策

對象如何獲取組件?

如果對象創(chuàng)建組件:

可以保證對象總是能拿到需要的組件,但是重新設(shè)置對象會比較困難。組件模式的強(qiáng)力特性之一就是只需要重新組合組件就可以創(chuàng)建新的對象,如果對象總是硬編碼組裝自己,我們就無法利用這個特性。

如果外部代碼提供組件:

對象更靈活。我們可以提供不同的組件,從而改變對象的行為。通過共用組件,對象變成了組件容器,我們可以為不同目的一遍又一遍的重用它。

對象可以與具體的組件類型解耦,對象只需要知道組件接口而不需要知道具體類型。

組件之間如何通信?

通過修改容器對象的狀態(tài):

這樣做可以保持組件解耦。

但是需要將組件分享的任何數(shù)據(jù)存儲在容器類中。通常狀態(tài)只在幾個組件間共享。

組件的通信也會基于組件的運(yùn)行順序,這需要我們小心的排列各種組件的操作保證運(yùn)行時能達(dá)到想要的效果。

組件之間相互引用:

思路是組件持有要交流的組件的引用,不通過容器類直接進(jìn)行交流。

雖然簡單快捷,但是讓組件之間綁在了一起。

通過發(fā)送消息:

最復(fù)雜的選項(xiàng)。在容器類中建立消息系統(tǒng),允許組件相互發(fā)送消息。

好處是同級組件可以解耦,容器類也變的簡單。


Unity的各種組件就是完全根據(jù)組件模式的原則進(jìn)行的設(shè)計(jì)。

組件模式與策略模式類似。都是將對象的行為取出,劃入單獨(dú)的重述對象。區(qū)別是,策略模式通常是無狀態(tài)的,僅封裝了算法而沒有數(shù)據(jù)。定義了對象如何行動,沒有定義對象是什么。

組件更加重要。組件經(jīng)常保存對象的狀態(tài),有助于確定其真實(shí)身份。有些組件也可能沒有任何狀態(tài)。在這種情況下,可以在不同的容器對象中使用相同的組件實(shí)例。這么看來,它的行為確實(shí)更像一種策略。


參考

《游戲編程模式》

《游戲編程模式》筆記——組件模式的評論 (共 條)

使用qq登录你需要登录后才可以评论。
利川市| 辉县市| 永德县| 海口市| 陕西省| 岳池县| 抚顺县| SHOW| 高密市| 玉屏| 潜山县| 津南区| 富川| 金沙县| 章丘市| 密云县| 秦皇岛市| 平利县| 罗平县| 富源县| 安康市| 宣威市| 扶沟县| 塘沽区| 拜泉县| 清远市| 瑞昌市| 沭阳县| 大洼县| 平原县| 龙胜| 赤峰市| 濉溪县| 曲阳县| 环江| 鹿泉市| 开平市| 兴隆县| 凤山市| 肇东市| 古田县|