• <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>

            State 模式

            Posted on 2009-12-29 21:25 rikisand 閱讀(513) 評論(0)  編輯 收藏 引用 所屬分類: 工作記錄~~everydayDesign Pattern

            STATE 模式:

            一個(gè)對象的行為取決于他的狀態(tài),而且它必須在運(yùn)行時(shí)根據(jù)狀態(tài)改變他的行為。常規(guī)實(shí)現(xiàn)中,一個(gè)操作含有龐大的多分支的條件語句,且這些分支依賴于該對象的狀態(tài)。這個(gè)狀態(tài)通常使用一個(gè)或者多個(gè)枚舉常量表示。STate模式把這些狀態(tài)時(shí)候的對象看做一個(gè)獨(dú)立的對象,也就是將不同狀態(tài)時(shí)的行為分散到相應(yīng)的狀態(tài)類中。要達(dá)到這樣的效果,需要context,也就是狀態(tài)的持有者,即原先的類;抽象狀態(tài)類,他封裝了與context交互的接口;具體狀態(tài)類,也就是一個(gè)個(gè)的具體狀態(tài)。context中保存一個(gè)抽象狀態(tài)類對象為成員,并delegate對象行為給他,從而使相應(yīng)狀態(tài)下的行為代碼生效。如果狀態(tài)改變的準(zhǔn)則不是固定的則state狀態(tài)類同時(shí)應(yīng)該重寫changestate類以控制狀態(tài)的改變,否則可以在context中實(shí)現(xiàn)。

            具體到我們的項(xiàng)目:

            每一個(gè)device即為context,他擁有一個(gè)state對象,device中的函數(shù)processMsg(){state->processMSg();} 由于狀態(tài)改變的規(guī)則依賴于收到的消息,也就是說一個(gè)狀態(tài)可能轉(zhuǎn)換到多個(gè)狀態(tài)device的每個(gè)狀態(tài)需要重寫statechange方法,stateChange(){state->stateChange(this,msg);} 這樣,不同的狀態(tài)下的行為實(shí)現(xiàn)在具體狀態(tài)的類中,比原先的版本清晰明了,可讀性更強(qiáng)。

            久久99精品国产麻豆不卡| 亚洲日韩欧美一区久久久久我| 999久久久免费精品国产| 久久天天躁狠狠躁夜夜网站| 狠狠色综合网站久久久久久久 | 久久久一本精品99久久精品88| 久久国产精品99精品国产987| 亚洲午夜福利精品久久| av午夜福利一片免费看久久| 伊色综合久久之综合久久| 1000部精品久久久久久久久| 美女久久久久久| 久久久久国产一级毛片高清版| 久久精品国产亚洲AV影院| 很黄很污的网站久久mimi色| 丁香狠狠色婷婷久久综合| 亚洲精品美女久久777777| 久久久久人妻精品一区三寸蜜桃| 国产精品无码久久综合 | 国产精品成人99久久久久 | 亚洲午夜无码AV毛片久久| 亚洲一区二区三区日本久久九| 天天躁日日躁狠狠久久| 国产成人精品久久| 亚洲中文字幕无码久久2020| 综合久久给合久久狠狠狠97色| 99久久精品这里只有精品| 久久久久免费精品国产| 久久久九九有精品国产| 亚洲乱亚洲乱淫久久| 国产精品无码久久四虎| 久久精品成人影院| 久久99久久成人免费播放| 久久久久久久综合综合狠狠| 久久不见久久见免费影院www日本| A级毛片无码久久精品免费| 国产精品美女久久久免费| 久久99精品久久久久久秒播| 久久露脸国产精品| 一本久久a久久精品vr综合| 午夜人妻久久久久久久久|