青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

《ASD》設(shè)計(jì)模式:Command和Active Object

轉(zhuǎn)載自:http://likeyesterday.spaces.live.com/Blog/cns!A80F5D17DD9D10BF!597.entry

Command模式:
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations. - 《Design Patterns》

Command模式的關(guān)鍵在于只包含一個(gè) Execute方法,子類在實(shí)現(xiàn)這個(gè)接口時(shí),在Execute方法中,完成特定的任務(wù)??梢哉f,這是一個(gè)非常簡單的模式。
《ASD》中提到了該模式的三種用法:
1. Invoker可以和任意一個(gè)Command掛鉤,而且不需要了解這到底是個(gè)什么ConcreteCommand,然后在需要的時(shí)候調(diào)用這個(gè) Command對(duì)象的Execute方法就行了。這在消息驅(qū)動(dòng)的的系統(tǒng)中非常常見,每個(gè)trigger就是一個(gè)invoker。那么如何把Command 和invoker掛鉤呢?方法很多,最cool的方法是在系統(tǒng)外用一個(gè)配置文件來指定。這樣不需要重新編譯就可以改變軟件運(yùn)行的方式??梢詤⒖?Source Insight的界面。Source Insight中可以任意配置菜單項(xiàng)和工具欄按鈕。其實(shí)現(xiàn)應(yīng)該就是應(yīng)用了這種Command模式。
2. 上面的方法是否讓人想起了Template模式?有點(diǎn)相像吧。順著這個(gè)思路去想,就可以把Command模式應(yīng)用于Transaction。讓一個(gè)類來解決Transaction的init和uninit問題,中間包含一個(gè)Command的隊(duì)列。這樣就可以把這個(gè)隊(duì)列中的全部command當(dāng)作一個(gè) transaction了。這樣的作法可以把Transaction的實(shí)現(xiàn)和邏輯分離開來,是很漂亮的實(shí)現(xiàn)。同樣的思路,也可以用在類似的問題上,需要 init和uninit,中間有不定量的操作。
3.如果真的用來解決transaction問題,那么就必須具備roll back的能力。然而這個(gè)很容易實(shí)現(xiàn),只要在command類中,添加undo方法就可以了。剩下的活交給invoker來處理。
4.此外還有一個(gè)附帶的好處。command類和一個(gè)單獨(dú)的execute方法其實(shí)很相似,但是command類的對(duì)象有生命周期,可以由程序來控制。因此,一個(gè)command對(duì)象,可以在提交了很長時(shí)間以后再批量執(zhí)行。
 
除了這些以外,《Design Pattern》還提到了Command模式的其他使用方法。雖然這些方法未必實(shí)用,但我還是把它們列在這里:
1.command對(duì)象和command對(duì)象的序列都可以serialization。這樣如果軟件被有意或無意的中止(例如crash),在重新啟動(dòng)后,還可以接續(xù)之前沒有完成的任務(wù)。
2.Command模式如果和Composite模式接合,就可以作出MacroCommand。^_^,這個(gè)idea雖然很cool,但是可以用到的地方大概不多吧。
 
Active Object模式不屬于《Design Pattern》23模式。實(shí)際上,她是一種特殊的Command Queue。其特殊之處在于:
1. 隊(duì)列的擁有者會(huì)順序地執(zhí)行隊(duì)列中所有Command對(duì)象的Execute方法。(這個(gè)其實(shí)不算特殊)
2.Command對(duì)象在自己的Execute方法結(jié)束前,可以把一個(gè)新的command對(duì)象(實(shí)際上常常是這個(gè)command對(duì)象自己)再加到隊(duì)列的尾部。
看出來了嗎,這個(gè)隊(duì)列有可能不會(huì)終止的,他可以一直執(zhí)行下去。這個(gè)可以作為一個(gè)應(yīng)用或者服務(wù)的主模塊了,想像一下她可以作多少事情吧。
《ASP》指出這個(gè)模式可以用來在一個(gè)線程中處理多任務(wù)的問題!!! ^_^ 太cool了。
如何處理呢?你可以把每個(gè)command對(duì)象看作是一個(gè)任務(wù)。他在Execute函數(shù)中,處理自己的任務(wù),在任務(wù)告一段落時(shí),記錄自己的狀態(tài),然后把自己插入到隊(duì)列的尾部,結(jié)束Execute方法。當(dāng)隊(duì)列輪完一周后,又會(huì)再次執(zhí)行這個(gè)command對(duì)象的Execute方法。 ^_^ 很cool吧。
那么這種方法和多線程的方法相比有什么有缺點(diǎn)呢?
最大的優(yōu)點(diǎn)是,所有的command都在同一個(gè)線程中,因此切換時(shí),不需要進(jìn)入內(nèi)核模式?。〕咝О。?!而且,可以有很多很多的command,數(shù)量上遠(yuǎn)遠(yuǎn)超過多線程的數(shù)量。
缺點(diǎn)嘛,是這種方法需要用戶自己來實(shí)現(xiàn)調(diào)度,另外這其實(shí)是一種非剝奪模式的多任務(wù),如果command處理不好,就會(huì)連累其它所有的command,因此實(shí)際上比多線程要更復(fù)雜。(嘿嘿,程序員能夠怕麻煩嗎?)
還有一點(diǎn),Active Object運(yùn)行于單線程,也就是說,她不能享受多處理器或多處理器核心帶來的性能上的改善。
其實(shí),這最后一點(diǎn)是非常致命的一點(diǎn)。也就是說,在當(dāng)前intel的超線程CPU機(jī)器上,如果系統(tǒng)的負(fù)擔(dān)并不重的時(shí)候。Active Object的效率有可能比多線程更低。
Anyway,這是一個(gè)非常有趣的模式。只是一般的程序員可能沒有機(jī)會(huì)用到。但是請(qǐng)記住她,也許能有那么一次機(jī)會(huì),可一用她來爽上一把。

posted on 2010-02-28 16:05 楊粼波 閱讀(955) 評(píng)論(0)  編輯 收藏 引用


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


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产一区二区三区在线播 | 亚洲免费大片| 久久不射电影网| 日韩视频一区二区三区在线播放免费观看 | 国产欧美精品在线播放| 欧美好吊妞视频| 久久久999国产| 亚洲伊人观看| 一区二区三区你懂的| 亚洲国产精品一区在线观看不卡 | 亚洲欧美日产图| 亚洲美女网站| 最新国产成人在线观看| 国内精品亚洲| 国产日韩欧美综合在线| 国产精品久久国产精麻豆99网站| 欧美丰满高潮xxxx喷水动漫| 久久嫩草精品久久久精品一| 欧美一二三区精品| 亚洲一区二三| 在线视频欧美日韩| 一区二区激情小说| 日韩视频中文字幕| 亚洲看片网站| 亚洲免费av电影| 亚洲精品日韩一| 亚洲破处大片| 亚洲乱码久久| 一本色道婷婷久久欧美| 日韩一区二区精品| 亚洲精品国产欧美| av成人免费在线观看| 99国产精品久久| 99在线精品观看| 亚洲一区二区精品| 小黄鸭视频精品导航| 欧美亚洲一区二区在线| 欧美一区二区三区精品| 久久久久国产精品一区二区| 久久久精品一区二区三区| 久久久精品午夜少妇| 免费高清在线一区| 欧美精品系列| 欧美午夜免费影院| 国产女人18毛片水18精品| 国产欧美一区二区三区视频| 国产日韩在线播放| 影音国产精品| 亚洲理论电影网| 亚洲一区在线观看免费观看电影高清 | 国产精品国产三级国产普通话三级| 欧美日韩免费在线观看| 国产精品看片资源| 国产专区一区| 亚洲精品免费在线| 亚洲欧美一区二区视频| 久久精品毛片| 亚洲国产成人久久| 亚洲午夜精品网| 久久精品五月| 欧美另类69精品久久久久9999| 欧美吻胸吃奶大尺度电影| 国产视频在线观看一区| 亚洲国产精品va| 亚洲影院色在线观看免费| 欧美一区二区三区在线视频 | 久久综合九九| 亚洲国产专区| 性欧美大战久久久久久久久| 久久蜜桃精品| 欧美视频中文字幕在线| 国产一区二区丝袜高跟鞋图片| 亚洲国产国产亚洲一二三| 一个色综合av| 久久青青草原一区二区| 亚洲精品少妇30p| 欧美亚洲自偷自偷| 欧美精品久久天天躁| 国产精品一区视频网站| 亚洲欧洲日本国产| 欧美一区二区视频网站| 91久久久亚洲精品| 欧美一区二区精品久久911| 欧美全黄视频| 激情综合激情| 亚洲欧美日韩精品在线| 欧美激情中文字幕乱码免费| 亚洲欧美第一页| 欧美第一黄网免费网站| 国产视频久久久久久久| 99热在这里有精品免费| 久久夜色精品国产噜噜av| 9i看片成人免费高清| 另类成人小视频在线| 国产精品亚洲成人| 一区二区三区高清在线观看| 美女免费视频一区| 亚洲在线播放电影| 欧美日韩国产经典色站一区二区三区| 国模套图日韩精品一区二区| 亚洲综合二区| 亚洲另类春色国产| 欧美va天堂va视频va在线| 韩国三级电影一区二区| 欧美伊人久久久久久久久影院| 亚洲另类在线视频| 欧美ed2k| 亚洲国产精品综合| 久热精品在线视频| 亚洲男同1069视频| 国产精品国内视频| 亚洲一级在线观看| 亚洲精选一区| 欧美日韩久久精品| 亚洲毛片在线观看| 亚洲国内高清视频| 欧美成人免费小视频| 影音先锋在线一区| 裸体女人亚洲精品一区| 性做久久久久久免费观看欧美 | 久久久久久亚洲精品杨幂换脸| 亚洲一区二区在线看| 国产精品白丝av嫩草影院 | 欧美国产日韩一二三区| 久久久久久久97| 在线观看久久av| 老鸭窝毛片一区二区三区| 欧美一区国产二区| 国产一区二区欧美日韩| 久久精品人人做人人爽| 午夜综合激情| 国产午夜精品在线| 久久久噜噜噜久噜久久| 久久久777| 亚洲成人在线观看视频| 欧美激情在线观看| 欧美日韩成人在线视频| aⅴ色国产欧美| 一区二区动漫| 国产精品福利av| 91久久精品日日躁夜夜躁欧美 | 99人久久精品视频最新地址| 亚洲欧洲在线观看| 欧美日韩三级在线| 午夜激情综合网| 午夜亚洲精品| 在线播放亚洲一区| 亚洲第一在线| 欧美午夜精品久久久久久浪潮 | 亚洲精选在线观看| 亚洲最新在线| 国产亚洲精品bt天堂精选| 久久久精品一区二区三区| 久久天天综合| 一区二区三区精品| 亚洲综合欧美日韩| 加勒比av一区二区| 亚洲精品国产精品乱码不99| 国产精品久久久久久久久果冻传媒 | 亚洲精品一区二区三区婷婷月 | 亚洲精品日产精品乱码不卡| 亚洲久久一区二区| 国产精品视频yy9299一区| 美女国内精品自产拍在线播放| 欧美成人精品在线播放| 亚洲欧美卡通另类91av| 久久久久五月天| 99re6这里只有精品视频在线观看| 亚洲午夜精品一区二区三区他趣| 国产字幕视频一区二区| 亚洲日本免费| 国产一区深夜福利| 91久久国产综合久久| 国产精品亚洲第一区在线暖暖韩国| 蜜乳av另类精品一区二区| 欧美婷婷六月丁香综合色| 久久久久久一区二区三区| 欧美精品在线一区二区三区| 久久狠狠亚洲综合| 欧美黑人在线播放| 久久激情五月激情| 欧美激情国产日韩| 久久久久国色av免费观看性色| 欧美大成色www永久网站婷| 欧美在线视屏| 欧美日韩一区在线观看| 免费欧美日韩国产三级电影| 欧美性jizz18性欧美| 亚洲国产精品va在线看黑人动漫| 国产麻豆午夜三级精品| 亚洲日本在线观看| 伊人精品在线| 亚洲欧美日韩高清| 一本大道久久a久久精二百| 久久久国产精品一区| 欧美伊人久久久久久午夜久久久久 | 亚洲欧洲日本国产| 狠狠色综合网| 亚洲欧美资源在线| 亚洲一区二区三区免费观看|