亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于狀態(tài)模式的應(yīng)用研究

        2009-04-29 00:00:00肖卓宇
        電腦知識與技術(shù) 2009年15期

        摘要:以降低復(fù)雜度,增強(qiáng)可擴(kuò)張性為目標(biāo),建立基于傳送裝置的入口模型,體現(xiàn)出狀態(tài)模式的優(yōu)越性,最終通過采用該模式解決了某大型鋼鐵企業(yè)傳送裝置入口的建模問題。

        關(guān)鍵詞:設(shè)計(jì)模式;狀態(tài)模式;軟件復(fù)用

        文獻(xiàn)標(biāo)識碼:A 中圖分類號:TP311 文章編號:1009-3044(2009)15-3919-02

        Application Research and Analysis Based on the State Pattern

        HE Jian1, XIAO Zhuo-yu2

        (1.The Maternal and Child Health Hospital of Hunan Province, ChangSha 410008, China; 2.New College of Central South University of Forestry and Technology, Changsha 410004, China)

        Abstract: This paper sets up a model base on entrance of the equipment get increase expanding, cut down the complexity early or late. At the same time get the advantage of the State Pattern .Finally we settle the entrance of the equipment modeling problem by state pattern.

        Key words: design pattern; state pattern; reusable software

        1 引言

        設(shè)計(jì)面向?qū)ο蟮能浖容^困難,而設(shè)計(jì)可復(fù)用面向?qū)ο蟮能浖透永щy。你必須找到相關(guān)的對象,以適當(dāng)?shù)牧6葘⑺麄儦w類,再定義類的接口和繼承層次,建立對象之間的基本關(guān)系,為此提出設(shè)計(jì)模式這個(gè)概念[1]。設(shè)計(jì)模式簡化了軟件的設(shè)計(jì)和過程的實(shí)現(xiàn),使軟件系統(tǒng)的基礎(chǔ)架構(gòu)更加清晰,因此在諸多大型軟件系統(tǒng)的設(shè)計(jì)過程中,設(shè)計(jì)模式都成為重要的輔助手段。文章以某大型鋼鐵企業(yè)熱匝薄板管理系統(tǒng)的傳送裝置的入口為背景,比較了兩種設(shè)計(jì)模式(第一種設(shè)計(jì)模式是該鋼鐵企業(yè)在90年代初實(shí)施863計(jì)劃信息化帶動工業(yè)化所用的老CIMS系統(tǒng),第二種模式是我方基于狀態(tài)模式開發(fā)的新系統(tǒng)),并通過研究比較,體現(xiàn)出以降低復(fù)雜度,增強(qiáng)可擴(kuò)張性為目的的狀態(tài)模式在處理旋轉(zhuǎn)傳送裝置入口問題的優(yōu)越性。

        2 設(shè)計(jì)模式

        設(shè)計(jì)模式首先由Erich Gamma, Richard Helm等幾位模式設(shè)計(jì)先行者引入到軟件設(shè)計(jì)領(lǐng)域。一個(gè)設(shè)計(jì)模式的命名,抽象確定了一個(gè)通用設(shè)計(jì)結(jié)構(gòu)的主要方面,這些設(shè)計(jì)結(jié)構(gòu)能被用來構(gòu)造可復(fù)用的面向?qū)ο笤O(shè)計(jì)[2-3],并且每一個(gè)設(shè)計(jì)模式都集中在一個(gè)面向?qū)ο蟮脑O(shè)計(jì)問題或設(shè)計(jì)要點(diǎn)。

        3 狀態(tài)模式(State Pattern)模型

        狀態(tài)模式的用意是允許一個(gè)對象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為[3]。如圖1所示,我們考慮一個(gè)Context類,Context對象處于若干不同狀態(tài)之一如:ConcreteStateA, ConcreteStateB等, 當(dāng)一個(gè)Context對象收到其他對象請求后,它根據(jù)自身的當(dāng)前狀態(tài)作出不同的反應(yīng), 這個(gè)模式的關(guān)鍵思想在于引入的操作狀態(tài)的子類提供了一個(gè)公共接口。Context類將所有與狀態(tài)相關(guān)的請求委托給這個(gè)狀態(tài)對象。Context使用它的State子類實(shí)例來執(zhí)行特定的操作,一旦狀態(tài)改變Context對象就會改變它所使用的狀態(tài)對象[1,3]。

        4 熱匝薄板管理系統(tǒng)的入口背景研究

        現(xiàn)以某鋼鐵企業(yè)一臺旋轉(zhuǎn)傳送裝置的入口狀態(tài)進(jìn)行建模。一臺旋轉(zhuǎn)傳送裝置是一個(gè)大型的旋轉(zhuǎn)托架,這是一臺大型的智能設(shè)備,它可以通過一個(gè)入口接受原材料,并根據(jù)標(biāo)記在原材料上的條碼ID將其進(jìn)行分類存儲。傳送裝置的入口用一個(gè)按鈕進(jìn)行操作控制,如果入口處于關(guān)閉狀態(tài),那么按下這個(gè)按鈕可以將入口打開,如在入口完全開啟前,我們再次觸動這個(gè)按鈕則入口關(guān)閉。如該入口完全開啟狀態(tài)超過2秒,則因超時(shí)而關(guān)閉。我們可以在入口開啟時(shí),再次按下按鈕從而可以避免入口因?yàn)榘l(fā)生超時(shí)而關(guān)閉[4]。如圖2說明了該傳送裝置入口的狀態(tài)以及狀態(tài)遷移關(guān)系。

        5 基于狀態(tài)模式的入口建模

        如圖3所示,我們?yōu)閭魉脱b置入口的每個(gè)狀態(tài)創(chuàng)建了一個(gè)對應(yīng)的類。每個(gè)狀態(tài)類包括了一個(gè)Touch()方法,這個(gè)方法定義了當(dāng)入口處于某個(gè)狀態(tài)時(shí),操作人員觸動按鈕之后,系統(tǒng)執(zhí)行的代碼邏輯。在新的設(shè)計(jì)中我們沒有改變Door2對象的角色,我們?nèi)匀皇褂肈oor2對象中的_state對象,并且讓多態(tài)發(fā)揮了非常重要的作用。Touch(),Complete(),Timeout()以及Status()方法都應(yīng)用了多態(tài),每個(gè)方法都表示一類遷移。雖然客戶調(diào)用了相同的操作,但是接收者類(即狀態(tài)類)可能不同。其多態(tài)規(guī)則要求當(dāng)調(diào)用一個(gè)方法時(shí),實(shí)際執(zhí)行的方法不僅取決于操作的特征標(biāo)記,同時(shí)還取決于操作的接收者類。思路如下:

        Private DoorState _state;

        Public class Door2

        {

        // 變量和構(gòu)造函數(shù)

        Public void Touch()//取得抽象Touch()方法

        Public void Complete() //取得抽象Complete()方法

        Public void Timeout() //取得抽象Timeout()方法

        Public string Status() //取得抽象Status()方法

        Public void SetStatus(DoorState state)

        //表示入口狀態(tài)改變的方法

        }

        由于DoorOpening,DoorOpen, DoorClosed,以及DoorClosing, DoorStayOpen的實(shí)現(xiàn)方式相似,在此我們僅以DoorOpen子類為例進(jìn)行詳細(xì)說明。如圖3所示,其中DoorState是一個(gè)抽象類,且DoorOpen是DoorState子類 ,那么我們必須通過子類DoorOpen對父類DoorState的方法進(jìn)行覆蓋。思路如下:

        Public class DoorOpen: DoorState

        {

        Public DoorOpen(Door2 door):base(door)

        {

        Public override void Touch()

        {

        …… //僅在DoorOpen狀態(tài)觸發(fā)

        Touch()方法后的狀態(tài)改變

        }

        Public override void Timeout()

        {

        {

        …… //僅在DoorOpen狀態(tài)觸發(fā)

        Timeout()方法后的狀態(tài)改變

        }

        }

        }

        由此可見通過狀態(tài)模式將所有與一個(gè)特定的狀態(tài)相關(guān)的行為都放入一個(gè)對象中。因?yàn)樗信c狀態(tài)相關(guān)的代碼都存在于一個(gè)狀態(tài)子類中,所以通過定義新的子類可以很容易的增加新的狀態(tài)和轉(zhuǎn)換。

        6 結(jié)束語

        實(shí)踐說明通過使用狀態(tài)模式可以將狀態(tài)相關(guān)行為局部化,并且通過將不同的狀態(tài)分割開來,從而使得所有與狀態(tài)相關(guān)的代碼存在于某一個(gè)狀態(tài)子類中,所以通過定義新的子類可以很容易的增加新的狀態(tài)和轉(zhuǎn)換,從而滿足業(yè)務(wù)發(fā)展的需要。設(shè)計(jì)模式的產(chǎn)生,使軟件設(shè)計(jì)人員可以借鑒他人的成功經(jīng)驗(yàn)找到軟件架構(gòu)設(shè)計(jì)的解決方案,所以對于設(shè)計(jì)模式的理解和運(yùn)用需要我們在實(shí)踐中不斷的摸索與總結(jié)[5]。

        參考文獻(xiàn):

        [1] 何成萬,何克清.基于角色的設(shè)計(jì)模式建模和實(shí)現(xiàn)[J].軟件學(xué)報(bào),2006(4).

        [2] 李燁,趙曦濱,李暉.設(shè)計(jì)模式在郵政代理保險(xiǎn)系統(tǒng)中的研究與應(yīng)用[J].計(jì)算機(jī)工程,2006(2).

        [3] Gamma E, Helm R.Design Pattern[M].北京:機(jī)械工業(yè)出版社,2000:200-212.

        [4] Jose H.Antonio SAP R/3 Administrator's[M].Handbook McGraw-Hill Osborne Media,1999.

        [5] 曾志明,朱江.設(shè)計(jì)模式在可復(fù)用GIS軟件開發(fā)中的應(yīng)用[J].計(jì)算機(jī)工程,2006(4).

        久久久www成人免费精品| 日本女同视频一区二区三区| 久久久麻豆精亚洲av麻花| 亚洲国产精品无码aaa片| 国产在线精品成人一区二区三区 | 胳膊肘上有白色的小疙瘩| 日本午夜艺术一区二区| 在线免费观看蜜桃视频| 国产丝袜美女一区二区三区| 色一情一区二| 亚洲色AV天天天天天天| 91久久精品一区二区| 色五月丁香五月综合五月| 国内精品久久久久久久影视麻豆| 久久久久国产精品四虎| 在教室轮流澡到高潮h免费视| 亚洲国产精品国自产拍av| 中文字幕高清在线一区二区三区 | 一本色道久久99一综合| 成年女人18毛片毛片免费| 日本不卡的一区二区三区中文字幕 | 色婷婷综合久久久久中文| 精品国产福利久久久| 一区二区三区四区国产亚洲| 免费看美女被靠到爽的视频| 一本一道波多野结衣一区| 亚洲国产高清美女在线观看| 日韩av水蜜桃一区二区三区| 国产精品扒开腿做爽爽爽视频| 中文字幕 人妻熟女| 扒下语文老师的丝袜美腿| 亚洲最新国产av网站| a级特黄的片子| 久久精品亚洲精品毛片| 国产精品国产传播国产三级| 国产精品特级毛片一区二区三区| 久久99国产亚洲高清观看韩国 | 久久久久国色av免费观看性色| 日本韩无专砖码高清| 青青手机在线视频观看| 狼人精品剧情av在线观看|