日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《游戏编程模式》读书笔记之一

發(fā)布時(shí)間:2025/3/19 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《游戏编程模式》读书笔记之一 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

觀察者模式

一、需要注意的地方

同步、異步

(1)對事件同步響應(yīng),被觀察者有可能會(huì)阻塞
(2)對事件異步響應(yīng),如果觀察者試圖獲得被觀察者的鎖,游戲就進(jìn)入死鎖。要使用事件隊(duì)列來做異步通信

動(dòng)態(tài)分配內(nèi)存

(1)觀察者列表的添加和刪除,需要?jiǎng)討B(tài)分配內(nèi)存。 (2)使用鏈?zhǔn)接^察者,無需動(dòng)態(tài)分配內(nèi)存。當(dāng)觀察者接到通知,它返回了一個(gè)標(biāo)識(shí),表明被觀察者是否應(yīng)該繼續(xù)遍歷觀察者列表。這涉及到職責(zé)鏈模式

銷毀被觀察者、觀察者(云式原則:有始有終原則)

銷毀被觀察者,需要讓觀察者接收到一個(gè)“死亡通知”,自動(dòng)取消注冊 維基百科有個(gè)專門的名字:失效監(jiān)聽者問題

二、時(shí)代在變

觀察者模式在面向?qū)ο缶幊讨写笮衅涞?#xff08;Java中的java.util.Observer、C#中的delegate/event),但沉重而且死板。 例如:觀察者只有一個(gè)OnNotify()方法,觀察者監(jiān)聽多個(gè)被觀察者,它不能為不同的被觀察者調(diào)用不同的通知方法 作者的觀點(diǎn): (1)C++克服了在沒有垃圾回收語言構(gòu)建閉包的弱點(diǎn),甚至Java在JDK8中引入了閉包。(作者非常青睞C++,我也想學(xué)) (2)傾向于注冊一個(gè)成員函數(shù)指針作為觀察者,而不是Observer接口的實(shí)例

原型模式

完全沒看懂,作者很叼,我需要努力。

單例模式(避免使用)

優(yōu)點(diǎn): 全局唯一,需要時(shí)再創(chuàng)建實(shí)例,可繼承 缺點(diǎn): (1)由于全局變量,到處被引用,促進(jìn)耦合,代碼理解困難(例如日志類) (2)每個(gè)線程都能訪問,卻不知道其他線程是否正在使用,導(dǎo)致競爭、死鎖。 (3)惰性初始化可能發(fā)生在游戲的性能高峰期,無法控制

總結(jié):

(1)單例類有時(shí)候并不需要,非要裝逼??梢允褂没悺㈧o態(tài)函數(shù)等 (2)使用單例,但不一定是全局訪問(子類沙箱模式) PS. ? ?惰性初始化要注意多線程問題

狀態(tài)模式

單獨(dú)寫了一篇文章

轉(zhuǎn)載于:https://www.cnblogs.com/fuyunzzy/p/7456346.html

總結(jié)

以上是生活随笔為你收集整理的《游戏编程模式》读书笔记之一的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。