国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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í)更像一種策略。


參考

《游戲編程模式》

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

分享到微博請遵守國家法律
峨眉山市| 浠水县| 峡江县| 嘉善县| 东兰县| 弥勒县| 离岛区| 平山县| 浪卡子县| 阳城县| 合肥市| 平遥县| 绥宁县| 昆明市| 诸暨市| 宁化县| 通州区| 苗栗市| 南木林县| 怀集县| 普安县| 马龙县| 大城县| 于都县| 万年县| 奉新县| 抚远县| 揭阳市| 曲沃县| 开封市| 平武县| 隆尧县| 惠水县| 鄄城县| 河池市| 宜章县| 新宁县| 新化县| 房山区| 兴业县| 邯郸县|