• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Loki庫(kù)研究-消息回調(diào)機(jī)制實(shí)現(xiàn)

            最早以前.就說(shuō)要好好研究一下Loki庫(kù)..一直都忘記..要么就有事.剛好這幾天要寫(xiě)一個(gè)事件ID與事件處理函數(shù)的綁訂機(jī)制.就想起來(lái)Loki的functor來(lái)了...花了兩天時(shí)間仔細(xì)研究了下loki中的幾個(gè)實(shí)現(xiàn).全部明白不敢說(shuō)..不過(guò)確實(shí)明白了..這種思路..在這里也要多謝權(quán)哥...呵呵
            我是從具體的現(xiàn)實(shí)思路出發(fā).來(lái)研究loki的..我的實(shí)現(xiàn)目地.是可以便捷的綁訂事件ID與事件處理函數(shù),在回調(diào)事件處理函數(shù)時(shí).不會(huì)有以前使用函數(shù)地址注冊(cè)時(shí)所產(chǎn)生的問(wèn)題,比如.回調(diào)的函數(shù)中無(wú)法正常使用函數(shù)所歸屬類(lèi)的信息.無(wú)法綁訂同一類(lèi)不同對(duì)象的實(shí)現(xiàn)方法

            首先先來(lái)研究..實(shí)現(xiàn)思路應(yīng)該是一樣的..同樣是綁訂函數(shù)地址.這點(diǎn).loki的functor以前幫我做好了.剩下的.只是如何能更好的使用
            loki 的一個(gè)functor只能綁訂一個(gè)函數(shù),
            思路是,預(yù)先申請(qǐng)一個(gè)足夠大的functor數(shù)組,將每個(gè)申請(qǐng)的functor存入這個(gè)數(shù)組中,以數(shù)組的下標(biāo)做為處理函數(shù)的ID;

            解決了回調(diào)函數(shù)的問(wèn)題,然后就是事件ID了.這個(gè)有點(diǎn)郁悶.實(shí)現(xiàn)思路有點(diǎn)繞.

            首先事件ID肯定是聲明了的.然后利用聲明的事件ID自動(dòng)生成相應(yīng)的事件結(jié)構(gòu)體,則于事件回調(diào)不需要變動(dòng)參數(shù),所以
            所有結(jié)構(gòu)體都派生自同一基體,然后就通過(guò)事件結(jié)構(gòu)體中的事件ID來(lái)進(jìn)行綁訂,這樣可以確訂聲明的處理方法必須隸屬于
            某一個(gè)對(duì)應(yīng)的事件ID,這點(diǎn)在回調(diào)注冊(cè)時(shí)也可以保證,默認(rèn)要注冊(cè)兩個(gè)ID.用于判定當(dāng)前ID是否超過(guò)以聲明的范圍 ,EventBegin  EventEnd;

            解決了事件ID之后..就是它們之前的綁訂了.這個(gè)簡(jiǎn)單.在聲明進(jìn).先傳入事件結(jié)構(gòu)體,再傳入用同樣事件結(jié)構(gòu)體聲明的回調(diào)函數(shù),然后將回調(diào)函數(shù)
            放入相對(duì)應(yīng)以事件ID做為下標(biāo)的數(shù)組中.搞定

            最后還有一個(gè)消息分派的問(wèn)題,這個(gè)地方有很多做法,,,暫時(shí)我先用最簡(jiǎn)單
            由外界傳入一個(gè)觸發(fā)的事件ID,然后判定 這個(gè)ID是否合法,然后回調(diào)對(duì)應(yīng)下標(biāo)的functor...這樣..就回調(diào)了相應(yīng)的處理函數(shù)了,參數(shù)這里
            做的最簡(jiǎn)單化處理,只是聲明了一個(gè)結(jié)構(gòu)體,然后.將事件ID賦值,然后把結(jié)構(gòu)體傳入回調(diào)函數(shù),以后有需要的話(huà)..此結(jié)構(gòu)體可由外界傳入
            相應(yīng)的值由外界傳入,不過(guò)..一個(gè)事件回調(diào)....貌似沒(méi)有這種要求

            呵呵..總之對(duì)于模板編程,有了一個(gè)比較清晰的了解..最大的收獲就是,看著滿(mǎn)篇的模板,四處亂飛的typename typedef class..不再頭暈了...呵呵

            在這個(gè)過(guò)程中..還研究了..單件模式,智能指針,抽象化工廠,呵呵..收獲非常大..也感覺(jué)自己以前的實(shí)現(xiàn)太不優(yōu)雅了...以后要往優(yōu)雅方向努力啦

            Loki的單件模式非常Happy.....以后決定..徹底忘記自己 寫(xiě)的單件...看都不看....專(zhuān)心用loki的.....還有智能指針..不過(guò)智能指針有個(gè)不爽的地方
            ..也不是不爽..只是我感覺(jué)失落....為啥呢...因?yàn)橹悄苤羔槦o(wú)法控制它什么時(shí)候釋放.......它自己會(huì)釋放..這樣雖然..安全都有保證,用著也開(kāi)心....
            不過(guò)....忽然不用我釋放了...總是覺(jué)得心里少點(diǎn)啥.........想delete......哈哈

            變高手~~~~~變高手~~~~~變高手~~~~~變高手~~~~~變高手~~~~~變高手~~~~~變高手~~~~~變高手~~~~~

            posted on 2007-11-02 18:19 Randy 閱讀(1411) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            <2007年11月>
            28293031123
            45678910
            11121314151617
            18192021222324
            2526272829301
            2345678

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(3)

            隨筆檔案

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲AV无码一区东京热久久| 国产午夜精品久久久久九九| 亚洲国产成人久久综合区| 久久久久夜夜夜精品国产| 久久久精品午夜免费不卡| 久久93精品国产91久久综合| 伊人久久大香线蕉AV色婷婷色| 国产成人精品久久| 一本久久a久久精品综合夜夜 | 久久精品国产精品亚洲下载| 亚洲国产成人久久精品99 | 久久久久久久精品成人热色戒| 国产精品久久久久aaaa| 久久久久亚洲AV成人网人人网站 | 精品国产乱码久久久久久呢| 久久综合九色综合欧美狠狠| 久久人做人爽一区二区三区 | 麻豆AV一区二区三区久久| 国产香蕉97碰碰久久人人| 91精品国产91久久久久福利| 久久只有这精品99| 久久91这里精品国产2020| 精品久久777| 俺来也俺去啦久久综合网| 久久精品国产亚洲AV影院| 亚洲v国产v天堂a无码久久| 伊人色综合久久天天| 国产精品福利一区二区久久| 久久人人爽人人爽人人片av麻烦| 久久天天躁狠狠躁夜夜av浪潮| 精品久久777| 日本福利片国产午夜久久| 69SEX久久精品国产麻豆| 99久久成人国产精品免费| 久久久久人妻一区精品性色av| 久久99热这里只有精品国产| 精品国产乱码久久久久久人妻| 亚洲欧美成人综合久久久| 久久综合狠狠综合久久综合88| 77777亚洲午夜久久多喷| 日韩久久久久久中文人妻|