<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    走自己的路

    路漫漫其修遠兮,吾將上下而求索

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      50 隨筆 :: 4 文章 :: 118 評論 :: 0 Trackbacks
    1. 狀態結構圖
     

    2. 詳細介紹
         我們把狀態機中的對象分為 “狀態對象的持有者” 和 “狀態對象”, 也就是Stateful 和 Status兩類。AbstractStatus 抽象類實現 Status接口主要定義了一個模板transit,在狀態轉換前和狀態轉換后完成一些操作,并且增加了狀態描述,方便記錄當前所在的狀態,比如log到db或者log到文件中。
    StatusManager是由很多個全局單例的狀態組成的,這些單例包含了所有StatusMachine中需要用到的狀態,Stateful對象作為函數的參數傳入到status的handleStatus方法中,這樣避免了一個Status對象和Stateful綁定在一起,減少了Status對象的個數,這才可以把它們設計為單例。

    3.功能函數介紹

    Stateful; 狀態對象的持有者,姑且就把它稱為“有狀態”對象,這個接口描述了“有狀態”對象的行為, getCurrentStatus - 獲取當前有狀態對象的狀態, setCurrentStatus: 改變當前有狀態的對象所持有的狀態, nextStatus:由StatusMachine調用改變“有狀態”對象的狀態。這個接口可以根據不同的應用添加不同的方法,因為狀態對象持有者的行為根據不同應用可變性比較大。

    Status: 狀態對象,描述對象的狀態,對象狀態所具備的行為。getStatusDesc:得到狀態的描述符, handleStatus: 處理當前狀態, nextStatus:根據命令將“有狀態”對象改變到下一個狀態, transit:根據命令改變“有狀態”對象的狀態,并在改變前和改變后做一些特殊的操作,比如log, 判斷是否是異常狀態等。

    AbstractStatus: 主要加入了描述字符串和異常狀態,并且實現了transit方法,一般流程,如果有不同的transit流程,即需要在之前和之后完成不同的操作,可以在子類中重寫transit方法。

    StatusManager:定義了StatusMachine所需要的所有Status對象,這些對象都是全局靜態單例的。

    StatefulObject: Stateful對象的實現

    StatusMachine: 主業務流程,主業務流程中需要操作一個或多個有狀態對象的狀態改變,調用“有狀態”對象的nextStatus即可。

    4. 簡單實現
    簡單實例


    posted on 2008-08-22 20:55 叱咤紅人 閱讀(1231) 評論(0)  編輯  收藏 所屬分類: Design and Analysis Pattern J2SE and JVM
    主站蜘蛛池模板: 国产成人涩涩涩视频在线观看免费| 久久久久免费精品国产| 无限动漫网在线观看免费 | 九九九国产精品成人免费视频| 成年人免费观看视频网站| 日韩亚洲人成在线| 免费鲁丝片一级观看| 亚洲精品伦理熟女国产一区二区 | 日韩高清免费在线观看| 久久久久亚洲精品无码网址色欲| 尤物永久免费AV无码网站| 女bbbbxxxx另类亚洲| AV在线播放日韩亚洲欧| a级毛片视频免费观看| 亚洲一二成人精品区| 黄色网址免费大全| 亚洲欧美日韩中文二区| 国产免费直播在线观看视频| 免费看一级高潮毛片| 亚洲精品乱码久久久久久按摩 | 亚洲国产精品专区在线观看| 国产免费黄色无码视频| 亚洲欧洲在线观看| 女人张开腿等男人桶免费视频| 午夜不卡AV免费| 亚洲第一区香蕉_国产a| 久久久高清免费视频| 免费国产va在线观看| 亚洲AV无码专区亚洲AV伊甸园| 亚洲三级高清免费| 免费视频成人国产精品网站| 亚洲产国偷V产偷V自拍色戒| 色se01短视频永久免费| 一级一级一级毛片免费毛片| 亚洲色图综合网站| 免费国产在线观看| 久久精品国产免费观看 | 两个人看的www视频免费完整版| 久久久无码精品亚洲日韩蜜臀浪潮| 成年人性生活免费视频| 成人免费无码H在线观看不卡|