999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2009-04-29 00:00:00肖卓宇
電腦知識(shí)與技術(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)識(shí)碼:A 中圖分類號(hào):TP311 文章編號(hào):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)的對(duì)象,以適當(dāng)?shù)牧6葘⑺麄儦w類,再定義類的接口和繼承層次,建立對(duì)象之間的基本關(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ì)劃信息化帶動(dòng)工業(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è)對(duì)象在其內(nèi)部狀態(tài)改變時(shí)改變它的行為[3]。如圖1所示,我們考慮一個(gè)Context類,Context對(duì)象處于若干不同狀態(tài)之一如:ConcreteStateA, ConcreteStateB等, 當(dāng)一個(gè)Context對(duì)象收到其他對(duì)象請(qǐng)求后,它根據(jù)自身的當(dāng)前狀態(tài)作出不同的反應(yīng), 這個(gè)模式的關(guān)鍵思想在于引入的操作狀態(tài)的子類提供了一個(gè)公共接口。Context類將所有與狀態(tài)相關(guān)的請(qǐng)求委托給這個(gè)狀態(tài)對(duì)象。Context使用它的State子類實(shí)例來執(zhí)行特定的操作,一旦狀態(tài)改變Context對(duì)象就會(huì)改變它所使用的狀態(tài)對(duì)象[1,3]。

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

現(xiàn)以某鋼鐵企業(yè)一臺(tái)旋轉(zhuǎn)傳送裝置的入口狀態(tài)進(jìn)行建模。一臺(tái)旋轉(zhuǎn)傳送裝置是一個(gè)大型的旋轉(zhuǎn)托架,這是一臺(tái)大型的智能設(shè)備,它可以通過一個(gè)入口接受原材料,并根據(jù)標(biāo)記在原材料上的條碼ID將其進(jìn)行分類存儲(chǔ)。傳送裝置的入口用一個(gè)按鈕進(jìn)行操作控制,如果入口處于關(guān)閉狀態(tài),那么按下這個(gè)按鈕可以將入口打開,如在入口完全開啟前,我們?cè)俅斡|動(dòng)這個(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è)對(duì)應(yīng)的類。每個(gè)狀態(tài)類包括了一個(gè)Touch()方法,這個(gè)方法定義了當(dāng)入口處于某個(gè)狀態(tài)時(shí),操作人員觸動(dòng)按鈕之后,系統(tǒng)執(zhí)行的代碼邏輯。在新的設(shè)計(jì)中我們沒有改變Door2對(duì)象的角色,我們?nèi)匀皇褂肈oor2對(duì)象中的_state對(duì)象,并且讓多態(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對(duì)父類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è)對(duì)象中。因?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ì)的解決方案,所以對(duì)于設(shè)計(jì)模式的理解和運(yùn)用需要我們?cè)趯?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).

主站蜘蛛池模板: 国产专区综合另类日韩一区| 国产99视频精品免费观看9e| 2021精品国产自在现线看| 亚洲国产成人无码AV在线影院L| 国产成人精品一区二区| 久久精品国产精品国产一区| 亚洲精品综合一二三区在线| 精品一区二区三区视频免费观看| 伦伦影院精品一区| 97久久精品人人| 色综合中文| 亚洲天堂自拍| 午夜日b视频| 欧美成人午夜视频免看| 老司机aⅴ在线精品导航| 色妞永久免费视频| 亚洲精品视频网| www.99精品视频在线播放| 欧美日韩国产综合视频在线观看 | 毛片一区二区在线看| 国产精品香蕉在线| 国产高清在线观看| 亚洲精品福利视频| 国产男女XX00免费观看| 天天视频在线91频| 香蕉久久国产精品免| 欧美成人一级| 99re在线观看视频| 欧美色伊人| 国产办公室秘书无码精品| 国产欧美日韩一区二区视频在线| 精品成人免费自拍视频| 婷婷色中文网| 国产久草视频| 精品国产成人三级在线观看| 99在线观看精品视频| 欧洲熟妇精品视频| 91无码网站| 成人年鲁鲁在线观看视频| 亚洲欧美不卡| 午夜电影在线观看国产1区| 亚洲欧美不卡中文字幕| 国产在线八区| 日本尹人综合香蕉在线观看| 日韩欧美中文字幕在线精品| 亚洲视频黄| 亚洲免费黄色网| 国产麻豆另类AV| 亚洲精品第一页不卡| 日韩一区精品视频一区二区| 亚洲成人福利网站| 无码视频国产精品一区二区| 伊人91视频| 国产精品极品美女自在线网站| 国产在线小视频| 日本不卡在线播放| 亚洲人妖在线| 日韩在线中文| 久久青青草原亚洲av无码| 国产精品欧美在线观看| 狠狠v日韩v欧美v| 国产十八禁在线观看免费| 久久综合丝袜日本网| 国产日韩欧美黄色片免费观看| 亚洲人成人伊人成综合网无码| 91精品亚洲| 欧美亚洲第一页| 日本在线视频免费| 动漫精品中文字幕无码| 99热这里只有精品国产99| 日韩av手机在线| 国产精品9| 国产高清又黄又嫩的免费视频网站| 最近最新中文字幕免费的一页| 激情综合网激情综合| 日韩国产精品无码一区二区三区 | 日韩欧美国产成人| 欧美成人h精品网站| 色老头综合网| 99九九成人免费视频精品| 亚洲欧美一区在线| 免费看a级毛片|