摘要:隨著互聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的發(fā)展,對(duì)軟件可擴(kuò)展性、可維護(hù)性、可復(fù)用性等提出了越來越高的要求。為更好地構(gòu)建一個(gè)可擴(kuò)展性、可維護(hù)性、可復(fù)用性較高的低值實(shí)驗(yàn)耗材管理Web系統(tǒng),結(jié)合系統(tǒng)功能,以Django框架為基礎(chǔ),將策略設(shè)計(jì)模式應(yīng)用于系統(tǒng)設(shè)計(jì)中。策略設(shè)計(jì)模式加快了系統(tǒng)開發(fā)速度,方便系統(tǒng)功能擴(kuò)展與維護(hù),代碼復(fù)用性高,降低了系統(tǒng)耦合性,增強(qiáng)了系統(tǒng)內(nèi)聚性。經(jīng)測(cè)試,該系統(tǒng)運(yùn)行可靠,提高了實(shí)驗(yàn)耗材管理效率。
關(guān)鍵詞:策略設(shè)計(jì)模式;實(shí)驗(yàn)耗材管理;Django框架
DOI: 10. 11907/rjdk.192507
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1672-7800(2020)004-0189-05
0 引言
隨著信息技術(shù)的不斷發(fā)展,利用現(xiàn)代信息技術(shù)手段,特別是充分結(jié)合大數(shù)據(jù)技術(shù)、移動(dòng)互聯(lián)技術(shù)、數(shù)據(jù)庫技術(shù)等物聯(lián)網(wǎng)技術(shù),能為實(shí)驗(yàn)耗材管理提供技術(shù)支持,以更好地發(fā)揮低值耗材的經(jīng)濟(jì)效益;新技術(shù)的出現(xiàn),導(dǎo)致耗材管理業(yè)務(wù)需求不斷變化。耗材管理涉及實(shí)驗(yàn)項(xiàng)目種類多,實(shí)驗(yàn)器材數(shù)量大,對(duì)耗材管理的完整性、靈活性要求高,耗材查詢、盤點(diǎn)、統(tǒng)計(jì)等基本功能處理繁鎖,程序開發(fā)工作量也相應(yīng)增加。實(shí)驗(yàn)耗材Web管理系統(tǒng)是“資產(chǎn)管理系統(tǒng)”的重要組成部分,為學(xué)校資產(chǎn)管理提供便捷、強(qiáng)大的管理方案,耗材采購、入庫、出庫、盤點(diǎn)、借出、歸還等功能與資產(chǎn)管理有共同點(diǎn)。但是,由于耗材自身消耗較大,其與傳統(tǒng)資產(chǎn)管理有很大區(qū)別。因此,實(shí)現(xiàn)耗材Web管理系統(tǒng)與資產(chǎn)管理系統(tǒng)之間數(shù)據(jù)共享及功能維護(hù)是程序設(shè)計(jì)的重點(diǎn)。
實(shí)驗(yàn)耗材Web管理系統(tǒng)管理對(duì)象種類繁雜,業(yè)務(wù)量大,涉及到耗材管理、教學(xué)管理、實(shí)驗(yàn)設(shè)備管理、資產(chǎn)管理、采購管理等業(yè)務(wù)。為實(shí)現(xiàn)系統(tǒng)使用簡(jiǎn)單、方便的目標(biāo),可充分利用物聯(lián)網(wǎng)技術(shù)、移動(dòng)互聯(lián)技術(shù)和人工智能技術(shù),實(shí)現(xiàn)相關(guān)業(yè)務(wù)功能。物聯(lián)網(wǎng)、移動(dòng)互聯(lián)網(wǎng)與人工智能技術(shù)的日新月異,在為耗材管理提供更好技術(shù)支持的同時(shí),其功能業(yè)務(wù)也需作適應(yīng)性改變。耗材管理業(yè)務(wù)需求主要隨物聯(lián)網(wǎng)、人工智能新技術(shù)的變化而變化,管理系統(tǒng)智能化、個(gè)性化要求提高,軟件設(shè)計(jì)必須重點(diǎn)考慮可維護(hù)性、可擴(kuò)展性、可重用性[1],使系統(tǒng)功能適應(yīng)用戶環(huán)境,即時(shí)維護(hù)和擴(kuò)展,最大程度降低軟件設(shè)計(jì)隨功能變更而增加的維護(hù)難度。
針以上問題,本文對(duì)系統(tǒng)功能需求及未來功能擴(kuò)展進(jìn)行全面分析與預(yù)測(cè),設(shè)計(jì)一種功能模塊可擴(kuò)展性強(qiáng)、維護(hù)性高及代碼重用性好的實(shí)驗(yàn)耗材Web管理系統(tǒng),減少軟件開發(fā)成本,縮短開發(fā)時(shí)間,提高系統(tǒng)的維護(hù)性、擴(kuò)展性,以提高軟件質(zhì)量和開發(fā)效率。
1 耗材管理系統(tǒng)關(guān)鍵技術(shù)
( l)Django是一個(gè)開源的Web應(yīng)用框架,其MTC模式與經(jīng)典MVC框架模式相對(duì)應(yīng)[2],使用Python語言設(shè)計(jì)完成。Django可以很好地使用Python功能強(qiáng)大的第三方插件,甚至可以在其平臺(tái)上方便地開發(fā)新工具包,主要目的是簡(jiǎn)便、快速地開發(fā)數(shù)據(jù)庫驅(qū)動(dòng)的Web系統(tǒng)。Django可以很好地適配第三方插件,多個(gè)組件可以很方便地以插件形式服務(wù)于整個(gè)框架,使Django具有很強(qiáng)的可擴(kuò)展性。
(2)設(shè)計(jì)模式。描述如何利用面向?qū)ο蟮幕靖拍詈蜋C(jī)制解決可擴(kuò)展的軟件設(shè)計(jì)中常出現(xiàn)的問題,并針對(duì)設(shè)計(jì)問題給出可復(fù)用方案[3-6]。此解決方案對(duì)反復(fù)出現(xiàn)的設(shè)計(jì)結(jié)構(gòu)進(jìn)行識(shí)別和抽象,是軟件設(shè)計(jì)人員在面向?qū)ο筌浖O(shè)計(jì)中成功解的記錄與提煉,如觀察者模式、工廠模式、經(jīng)典MVC模式等。通過使用這些設(shè)計(jì)模式,便于簡(jiǎn)化軟件設(shè)計(jì)過程,提高軟件設(shè)計(jì)效率,降低軟件復(fù)雜度[7-12]。
(3)策略模式。它定義了一系列算法,并將每個(gè)算法封裝起來,使它們可以相互替換,且算法的變化不會(huì)影響使用算法的客戶。利用此模式可使算法的變化獨(dú)立于使用客戶,把算法使用責(zé)任和算法實(shí)現(xiàn)分割開來,以降低代碼的耦合性。
(4)適配器模式。目的是將一個(gè)類接口轉(zhuǎn)變?yōu)榭蛻舳四繕?biāo)接口,從而使因不匹配而無法工作的兩個(gè)類能一起工作,適配器又分為類適配器和對(duì)象適配器[13-14]。
2 實(shí)驗(yàn)耗材Web管理系統(tǒng)業(yè)務(wù)分析
對(duì)實(shí)驗(yàn)耗材Web管理系統(tǒng)業(yè)務(wù)進(jìn)行分析,系統(tǒng)功能模塊如圖1所示。
實(shí)驗(yàn)耗材Web管理系統(tǒng)主要功能是實(shí)現(xiàn)耗材采購管理、耗材管理、實(shí)驗(yàn)室管理、系統(tǒng)維護(hù)管理。
(1)系統(tǒng)維護(hù)管理是耗材管理的基礎(chǔ),主要完成基本信息管理、二維碼管理、耗材信息管理、耗材庫管理。其中,基本信息管理主要是系統(tǒng)用戶管理和相應(yīng)權(quán)限管理,包括實(shí)驗(yàn)室管理員和師生用戶的分級(jí)管理。因?qū)嶒?yàn)耗材是分部門、分院系、分實(shí)驗(yàn)使用的,故對(duì)耗材使用者管理需精細(xì)到部門管理員、院系管理員、實(shí)驗(yàn)室教師及學(xué)生,達(dá)到對(duì)耗材使用的可追溯性。管理員對(duì)系統(tǒng)中的數(shù)據(jù)擁有增加、刪除、修改、查詢權(quán)限,教師擁有對(duì)實(shí)驗(yàn)及相關(guān)耗材的申請(qǐng)、領(lǐng)取、回庫等權(quán)限,學(xué)生僅有耗材的受限領(lǐng)取權(quán)限。耗材信息管理主要是對(duì)耗材基本信息的管理,如耗材規(guī)格參數(shù)、耗材功能用途信息、類別、數(shù)量等。耗材庫管理主要實(shí)現(xiàn)耗材分類存放管理,主要對(duì)耗材存放的實(shí)驗(yàn)室、柜子、箱子等信息進(jìn)行管理。管理員對(duì)二維碼及條形碼進(jìn)行管理,對(duì)系統(tǒng)涉及到的所有二維碼及條形碼進(jìn)行統(tǒng)計(jì)管理。
(2)耗材管理。主要用于耗材使用信息管理,這是Web管理系統(tǒng)的核心功能,是耗材采購管理的重要依據(jù),也是耗材信息追蹤的重要環(huán)節(jié)。耗材管理主要包括耗材申領(lǐng)管理、暫存管理、回庫管理、轉(zhuǎn)移管理、盤點(diǎn)管理幾部分,是對(duì)耗材使用人、耗材消耗過程、耗材使用詳細(xì)情況等信息戳的記錄,為耗材統(tǒng)計(jì)分析提供依據(jù)。
(3)實(shí)驗(yàn)室管理。管理員完成實(shí)驗(yàn)室基本信息量管理、課程基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理。其中,實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理是此部分的重要功能,實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目耗材要求是整個(gè)耗材管理系統(tǒng)的依據(jù)和起點(diǎn)。
(4)耗材采購管理。系統(tǒng)根據(jù)實(shí)驗(yàn)條件、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目及參訓(xùn)學(xué)生總數(shù)情況,計(jì)算統(tǒng)計(jì)一年一度的耗材需求量。各部門及院系管理員根椐教師申報(bào)的實(shí)訓(xùn)項(xiàng)目及庫存,完成耗材計(jì)劃預(yù)算、采購申請(qǐng)、招標(biāo)管理、采購合同、供貨及驗(yàn)收入庫等管理,最終完成耗材庫存管理。
3 策略設(shè)計(jì)模式技術(shù)分析
為實(shí)現(xiàn)客戶使用一組功能業(yè)務(wù)而不關(guān)心這些功能業(yè)務(wù)差異,僅需使用它們共同的接口或抽象類即可完成這些不同功能的使用,實(shí)現(xiàn)業(yè)務(wù)需求的改變或增加,即實(shí)現(xiàn)對(duì)一組功能業(yè)務(wù)的單獨(dú)維護(hù)與擴(kuò)展,而不用修改客戶端功能業(yè)務(wù),以提高代碼的可維護(hù)性和可擴(kuò)展性,降低客戶端模塊與功能業(yè)務(wù)的耦合。策略模式可實(shí)現(xiàn)算法使用與具體算法之間的松耦合,提高軟件可維護(hù)性。策略設(shè)計(jì)模式結(jié)構(gòu)如圖2所示。
策略設(shè)計(jì)模式功能業(yè)務(wù)有3個(gè)重要的類15-16],其角色如下:①環(huán)境功能業(yè)務(wù)類( Context):系統(tǒng)調(diào)用的功能業(yè)務(wù);②抽象功能業(yè)務(wù)策略接口( AbstrctStrategy):需要適配統(tǒng)一抽象功能,為環(huán)境功能業(yè)務(wù)類提供統(tǒng)一的訪問接口;③具體功能業(yè)務(wù)策略類組( ConcreteStrategy):-組核心功能業(yè)務(wù),實(shí)現(xiàn)相關(guān)具體功能業(yè)務(wù)。
對(duì)于策略設(shè)計(jì)模式,主要適用如下應(yīng)用設(shè)計(jì):在系統(tǒng)中有許多類C oncreteStrategy,這些類的業(yè)務(wù)行為各不相同;系統(tǒng)功能業(yè)務(wù)需要在幾種算法中,或可能未來需要的幾種算法中選擇適用的某一種算法,這樣可以把這些不同算法在不同類中具體實(shí)現(xiàn)或未來再實(shí)現(xiàn);這些算法具有統(tǒng)一接口AbstrctStrategy,司使用面向?qū)ο蟮亩鄳B(tài)原則服務(wù)于系統(tǒng)使用類C ontext。使用此統(tǒng)一接口,選擇應(yīng)用具體算法類,以屏蔽不同算法中具體數(shù)據(jù)或算法差異,避免接觸與算法有關(guān)的復(fù)雜數(shù)據(jù),使接口調(diào)用簡(jiǎn)單化,實(shí)現(xiàn)算法細(xì)節(jié)[7]。
策略設(shè)計(jì)模式功能算法具有較強(qiáng)的獨(dú)立性、復(fù)用性和可擴(kuò)展性。模式提供了一種替代繼承的設(shè)計(jì)方法,以保持繼承的優(yōu)點(diǎn)即代碼復(fù)用,增強(qiáng)設(shè)計(jì)維護(hù)的靈活性,即算法獨(dú)立性和可擴(kuò)展性,避免在程序中使用多重條件轉(zhuǎn)移語句,使設(shè)計(jì)遵守高內(nèi)聚、低耦合原則。
4 策略設(shè)計(jì)模式應(yīng)用
4.1 實(shí)驗(yàn)耗材Web管理系統(tǒng)業(yè)務(wù)設(shè)計(jì)分析
在實(shí)驗(yàn)耗材Web管理系統(tǒng)中,處理每種基本模塊都會(huì)涉及信息的4大處理功能,即信息查詢處理、信息增加處理、信息修改處理、信息刪除處理,這些信息處理功能分布在不同的功能模塊里,涉及信息數(shù)據(jù)不一樣,處理方式和算法也不盡相同。在耗材信息管理查詢中,僅對(duì)耗材基本信息進(jìn)行查詢;在耗材申領(lǐng)管理查詢時(shí),查詢的信息有耗材基本信息、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目信息、耗材庫信息、課程信息、實(shí)驗(yàn)室基本信息、暫存信息、供貨信息等;耗材管理查詢涉及信息簡(jiǎn)單,耗材申領(lǐng)管理查詢涉及信息多,所以設(shè)計(jì)實(shí)現(xiàn)處理的過程、復(fù)雜度不一樣。
同理,增加處理、修改處理、刪除處理,在不同功能模塊中,涉及同種處理功能的信息不一樣,算法的實(shí)現(xiàn)就會(huì)存在差異。設(shè)計(jì)實(shí)現(xiàn)時(shí),這些模塊可實(shí)現(xiàn)耗材基本信息管理、二維碼管理、耗材信息管理、耗材庫管理、申領(lǐng)管理,暫存管理、回庫管理、轉(zhuǎn)移管理、盤點(diǎn)管理、實(shí)驗(yàn)室基本信息量管理、課程基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理,以及耗材計(jì)劃預(yù)算、采購申請(qǐng)、招標(biāo)管理、采購合同、供貨及驗(yàn)收入庫等等,增加處理、修改處理和刪除處理,需根椐模塊功能的不同而采用具體關(guān)聯(lián)算法處理。
如果設(shè)計(jì)實(shí)現(xiàn)同種功能使用分支結(jié)構(gòu),會(huì)導(dǎo)致大量代碼重復(fù),結(jié)構(gòu)復(fù)雜,后期維護(hù)、擴(kuò)展難度增大。且隨著新技術(shù)的更新和使用,模塊新功能與舊功能有差異,系統(tǒng)維護(hù)工作量成倍增加。為解決此問題,可采用軟件設(shè)計(jì)模式的策略模式和適配器模式,屏蔽具體模塊及數(shù)據(jù)差異,以降低程序復(fù)雜度,使代碼結(jié)構(gòu)合理、簡(jiǎn)單。
4.2 策略設(shè)計(jì)模式應(yīng)用分析
通過策略設(shè)計(jì)模式技術(shù)分析,結(jié)合以上實(shí)驗(yàn)耗材Web管理系統(tǒng)功能業(yè)務(wù)分析及Django框架實(shí)現(xiàn)方式,系統(tǒng)信息4大功能處理抽象為策略設(shè)計(jì)模式的信息功能業(yè)務(wù)策略抽象類AbstrctStrategy。結(jié)合Django框架,根據(jù)實(shí)際設(shè)計(jì)需要,重新命名為InformationHandlelnterface,對(duì)應(yīng)設(shè)計(jì)4個(gè)抽象方法,命名為informationQuery()、informationAdd()、informationModify()、informationDelete().
具體業(yè)務(wù)功能為申領(lǐng)管理、耗材信息管理、二維碼管理、基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉(zhuǎn)移管理、盤點(diǎn)管理、實(shí)驗(yàn)室基本信息量維護(hù),耗材計(jì)劃預(yù)算、供貨及驗(yàn)收入庫等,設(shè)計(jì)為具體功能業(yè)務(wù)策略類組ConcreteStrategy。如申領(lǐng)耗材管理類ApplyConsumablesHandle、耗材信息管理ConsumablesInformationManage、基本信息管理子模塊功能中的用戶基本信息管理功能為UserInforManage、用戶權(quán)限管理功能為UsePrivilegeManage、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理功能設(shè)計(jì)為ExperimentManage、課程基本信息管理CourseBase-Manage等具體策略業(yè)務(wù)功能,以實(shí)現(xiàn)接口InformationHan-dlelnterface中的統(tǒng)一抽象方法,完成系統(tǒng)的具體業(yè)務(wù)。在實(shí)驗(yàn)耗材Web管理中需根據(jù)具體階段業(yè)務(wù)使用具體功能業(yè)務(wù)策略類,完成具體的系統(tǒng)功能。實(shí)現(xiàn)時(shí)重新命名為InformationHandleManage。當(dāng)具體業(yè)務(wù)功能需擴(kuò)展,僅需動(dòng)態(tài)地選擇增加業(yè)務(wù)功能的查詢、增加、修改、刪除操作,大大提升了系統(tǒng)擴(kuò)展性。
策略設(shè)計(jì)模式在實(shí)驗(yàn)耗材Web管理系統(tǒng)的部分設(shè)計(jì)結(jié)構(gòu)如圖3所示。
InformationHandlelnterface是實(shí)現(xiàn)策略設(shè)計(jì)模式抽象功能策略模塊接口,抽象定義實(shí)現(xiàn)實(shí)驗(yàn)耗材Web系統(tǒng)中統(tǒng)一業(yè)務(wù)接口,即信息增加、信息修改、信息刪除、信息查詢。InformationHandleManage實(shí)現(xiàn)了策略設(shè)計(jì)模式中環(huán)境功能模塊類,是使用功能操作服務(wù)的類,據(jù)具體實(shí)現(xiàn)功能業(yè)務(wù)要求選擇使用相關(guān)特定功能,具體使用某一個(gè)Infor-mationHandlelnterface的實(shí)現(xiàn)類對(duì)象,完成系統(tǒng)不同業(yè)務(wù)功能,這樣可避免使用分支語句,降低程序可讀性,且也不用因減少或增加業(yè)務(wù)功能而增加代碼維護(hù)難度。Interface-Handlelnterface的子類是具體操作策略,如在申領(lǐng)管理的實(shí)現(xiàn)類ApplyConsumablesHandle、基本信息管理中用戶基本信息管理的實(shí)現(xiàn)類UserInforManage、耗材信息管理的實(shí)現(xiàn)類ConsumablesInformationManage等不同類的具體實(shí)現(xiàn);若需增加新的業(yè)務(wù)功能,僅需添加相關(guān)的InformationHan-dlelnterface子類即可,這樣可提高設(shè)計(jì)的擴(kuò)展性,最大程度減少系統(tǒng)維護(hù)。
4.3 策略設(shè)計(jì)模式實(shí)現(xiàn)
據(jù)德宏師范高等??茖W(xué)校信息學(xué)院實(shí)驗(yàn)耗材Web系統(tǒng)設(shè)計(jì)實(shí)際情況,本文采用Django框架完成系統(tǒng)設(shè)計(jì),以下是實(shí)現(xiàn)功能的部分Pvthon代碼。
4.3.1 環(huán)境功能業(yè)務(wù)在實(shí)驗(yàn)耗材Web系統(tǒng)中應(yīng)用實(shí)現(xiàn)
環(huán)境功能使用類InformationHandleManage,通過初始化一_
init一一(self,information_handle)或設(shè)置方法setlnforma-tionStrategy( self,information_handle),創(chuàng)建或更改具體的業(yè)務(wù)功能操作對(duì)象concreteInfoHandleStrategy,達(dá)到選擇使用具體業(yè)務(wù)類目的。通過使用此對(duì)象中的4個(gè)公共服務(wù)方法getlnformation()、updatelnformation().addlnformation()、deletelnformation(),實(shí)現(xiàn)具體功能。InformationHandleMan-age的部分實(shí)現(xiàn)代碼如下:
class InformationHandleManage:
def一一init一一(self,inform ation_handle):
self.一一concreteInfoHandleStrategy =information_handle
def setlnformationStrategy( self, information_handle):
self.一一concreteInfoHandleStrategy=information_handle
def getlnformation( self):
return self.~一concretelnfoH andleStrategy.inform ationQ ue ry()
def updatelnformation( self):
self.一一concretelnfoHandleSirategy.informationModify()
def addlnformation( self):
self.一一concreteInfoHandleStrategy.informationAdd()
def deletelnformation( self):
self.一一concreteInfoHandleStrategy.informationDelete()
4.3.2 抽象功能業(yè)務(wù)策略接口實(shí)現(xiàn)
Pvthon語言沒有接口,但是Python提供了抽象類,且Pvthon的類支持多繼承,所以可以使用抽象類實(shí)現(xiàn)接口功能,本系統(tǒng)使用Pvthon的抽象類功能實(shí)現(xiàn)系統(tǒng)抽象業(yè)務(wù)策略接口InformationHandlelnterface,實(shí)現(xiàn)代碼如下:
class InfromationHandlelnterface():
def informationQuery( self):
raise NotImplementedError
def informationAdd( self):
raise NotImplementedError
def informationModifv( self):
raise NotImplementedError
def informationDelete( self):
raise NotlmplementedError
在抽象類中定義統(tǒng)一操作的增加、修改、刪除、查詢4個(gè)抽象方法,即informationAdd( self)、informationModifv( self)、informationDelete( self)、informationQuerv( self),為環(huán)境功能業(yè)務(wù)使用類InformationHandleManage提供服務(wù),同時(shí)為申領(lǐng)管理、耗材信息管理、二維碼管理、基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉(zhuǎn)移管理等功能提供統(tǒng)一接口。
4.3.3 實(shí)驗(yàn)耗材Web系統(tǒng)具體功能業(yè)務(wù)策略類實(shí)現(xiàn)
具體業(yè)務(wù)功能策略類組實(shí)現(xiàn)InfromationHandlelnter-face統(tǒng)一接口,即可為環(huán)境功能業(yè)務(wù)類提供服務(wù)。以申領(lǐng)耗材功能ApplyConsumablesHandle為例,此類繼承Infro-mationHandlelnterface,重載informationQuery、information-Add、informationM odify、informationD elete方法,實(shí)現(xiàn)耗材的申領(lǐng)信息顯示,進(jìn)行獲取、申領(lǐng)耗材,申領(lǐng)耗材修改管理、申領(lǐng)耗材取消。ApplyConsumablesHandle實(shí)現(xiàn)代碼如下:
class ApplyConsumahlesHandle( InfromationHandlelnterface):
def informationQuery( self):
info_handle=UseManagement()
displayinfolist,
dispconmlist=info_handle.readExperC on- mD etail( self.apply_id)
return displayinfolist, dispconmlist
def informationAdd( self):
info_handle=UseManagement()
if self.apply_add_flag= =self._APPLY_ALL_HAND LE:
info_handle.AddAlllnfo rm ation( self.consumable_list)
else:
info_handle.Addo nelnformation( self.consumable_list [0l)
def informationModify( self):
info_handle=UseManagement()
info_handle.Modifylnform ation( self.consumable_list[O])
def informationDelete( self):
info_handle=UseManagement()
info_handle.D eletelnformation( self.apply_id)
耗材信息管理、二維碼管理、基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉(zhuǎn)移管理等功能及擴(kuò)展功能實(shí)現(xiàn),類似申領(lǐng)耗材管理功能ApplyConsumablesHandle的實(shí)現(xiàn),主要實(shí)現(xiàn)Infro-mationHandlelnterface中的4個(gè)抽象方法,對(duì)這些功能的維護(hù),也主要是對(duì)這4個(gè)抽象方法實(shí)現(xiàn)的維護(hù)。所以在實(shí)驗(yàn)耗材Web系統(tǒng)中功能維護(hù)及新功能的增加,僅是對(duì)這些具體業(yè)務(wù)功能策略類的修改和增加,而不用去修改抽象功能業(yè)務(wù)策略類InfromationH andlelnterface和環(huán)境功能業(yè)務(wù)類InformationHandleManage中的代碼,提高了可維護(hù)性,降低了功能模塊的耦合度。
5 設(shè)計(jì)效果
本文以德宏師范高等??茖W(xué)校信息學(xué)院實(shí)驗(yàn)耗材Web系統(tǒng)設(shè)計(jì)為例,結(jié)合策略設(shè)計(jì)模式、Django框架和MySql數(shù)據(jù)庫技術(shù)完成系統(tǒng)設(shè)計(jì)。使用Django框架技術(shù)常見的三層結(jié)構(gòu)設(shè)計(jì),各層使用模塊方法獨(dú)立,實(shí)現(xiàn)申領(lǐng)耗材管理、耗材信息管理、二維碼管理、基本信息管理、實(shí)驗(yàn)實(shí)訓(xùn)項(xiàng)目管理、課程基本信息管理、耗材庫管理、暫存管理、回庫管理、轉(zhuǎn)移管理等功能。策略設(shè)計(jì)模式的使用,使系統(tǒng)方便實(shí)現(xiàn)業(yè)務(wù)功能擴(kuò)展,降低模式間的耦合度。在系統(tǒng)開發(fā)各階段,維護(hù)方便,節(jié)約時(shí)間,降低了開發(fā)費(fèi)用。
6 結(jié)語
策略設(shè)計(jì)模式,主要為系統(tǒng)功能需求變更與增加系統(tǒng)設(shè)計(jì)應(yīng)用場(chǎng)合提供一種有效的軟件設(shè)計(jì)模式。本文針對(duì)低值實(shí)驗(yàn)耗材Web管理應(yīng)用實(shí)際情況,充分利用策略設(shè)計(jì)模式優(yōu)點(diǎn),成功地應(yīng)用到系統(tǒng)設(shè)計(jì)中。實(shí)踐表明,應(yīng)用策略設(shè)計(jì)模式能方便地?cái)U(kuò)展系統(tǒng)功能,增強(qiáng)系統(tǒng)的維護(hù)性,提高系統(tǒng)開發(fā)效率,降低設(shè)計(jì)費(fèi)用,為同類設(shè)計(jì)問題提供了更好的參考。在代碼重用性方面,若能結(jié)合適配器模式或其它設(shè)計(jì)模式,可進(jìn)一步改善系統(tǒng)代碼的重用率。
參考文獻(xiàn):
[1]張偉,梅宏.面向特征的軟件復(fù)用技術(shù)——發(fā)展與現(xiàn)狀[J].科學(xué)通報(bào),2014,59(1):21-42.
[2] 劉紅霞,陸文迪.改進(jìn)的MVC設(shè)計(jì)模式的研究與應(yīng)用[J].計(jì)算機(jī)工程與科學(xué),2015,37(9):1688-1691.
[3]段群,吳粉俠,歐陽宏基.軟件設(shè)計(jì)模式在目標(biāo)考核系統(tǒng)中的應(yīng)用[J].自動(dòng)化技術(shù)與應(yīng)用,2017,36(9):60-63。
[4]鐘睿.設(shè)計(jì)模式在軟件設(shè)計(jì)中的應(yīng)用[J].電子技術(shù)與軟件工程,2018( 14):27-31.
[5] 莊立偉,衛(wèi)建國(guó),毛留喜.軟件設(shè)計(jì)模式在農(nóng)業(yè)氣象系統(tǒng)開發(fā)中的應(yīng)用[J].應(yīng)用氣象學(xué)報(bào),2011,22(5):162-174.
[6]劉海巖,鎖志海,呂青,等.設(shè)計(jì)模式及其在軟件設(shè)計(jì)中的應(yīng)用研究[J].西安交通大學(xué)學(xué)報(bào),2005( 10):1043-1047.
[7]楊靜.設(shè)計(jì)模式在敵我識(shí)別信號(hào)偵測(cè)顯控軟件的應(yīng)用[J].電子設(shè)計(jì)工程,2019,27( 4):38-42.
[8]蔡岳良.計(jì)算機(jī)軟件設(shè)計(jì)教學(xué)中系統(tǒng)工程方法的應(yīng)用[J].軟件導(dǎo)刊(教育技術(shù)),2017,16(3):19-20.
[9] 劉凌云.觀察者模式在面向抽象編程中的應(yīng)用[J].計(jì)算機(jī)與數(shù)字工程,2016,44(8):1474-1477,1522.
[IO] 葛萌,歐陽宏基.工廠設(shè)計(jì)模式的研究與應(yīng)用[J].計(jì)算技術(shù)與自動(dòng)化,2017,36(2):136-140.
[11]唐永瑞,張達(dá)敏.基于Ajax與MVC模式的信息系統(tǒng)的研究與設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(2):128-131.
[12]楊斌,張衛(wèi)冬,張利欣,等.基于Ajax的Observer模式客戶端研究[J].計(jì)算機(jī)工程,2010,36( 24):4-5,8.
[13]戚利娜.適配器模式及其應(yīng)用[J].電子測(cè)試,2017( 11):112-113.
[14] 羅錦坤,元昌安.軟件審計(jì)適配器模式研究及應(yīng)用[J].計(jì)算機(jī)技術(shù)與發(fā)展,2014,24( 12):183-187.
[15] 馬媛,趙智寶.基于策略模式數(shù)據(jù)粗化算法類庫設(shè)計(jì)與實(shí)現(xiàn)[J]軟件導(dǎo)刊,2009,8(12):44-46.
[16] [美]ERICH CAMMA.設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)[M].北京:機(jī)械工業(yè)出版社,2019.
(責(zé)任編輯:杜能銅)
作者簡(jiǎn)介:虞泉(1982-),男,碩士,德宏師范高等??茖W(xué)校信息學(xué)院、云南師范大學(xué)民族教育信息化教育部重點(diǎn)實(shí)驗(yàn)室講師,研究方向?yàn)檐浖_發(fā)、數(shù)據(jù)分析。