資源描述:
《delphi中dll封裝業(yè)務(wù)邏輯的實現(xiàn)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。
1、Delphi中DLL封裝業(yè)務(wù)邏輯的實現(xiàn) (黑龍江八一農(nóng)墾大學(xué),黑龍江大慶163319)
摘要:文章通過分析軟件分層設(shè)計的優(yōu)點(diǎn),提出了對用戶界面與業(yè)務(wù)邏輯進(jìn)行分離,通過接口或抽象類實現(xiàn)兩者間通信的方法,并對業(yè)務(wù)邏輯進(jìn)行封裝成動態(tài)鏈接庫,以達(dá)到數(shù)據(jù)資源共享的目的,解決了應(yīng)用邏輯重復(fù)使用問題,增加了系統(tǒng)的可復(fù)用性、可擴(kuò)展性和健壯性。
關(guān)鍵詞:分層設(shè)計;界面與業(yè)務(wù)邏輯分離;動態(tài)鏈接庫
中圖分類號:TP31文獻(xiàn)標(biāo)識碼:A文章編號:1007—6921(XX)10—0142—02
三層結(jié)構(gòu)是開發(fā)C/S或B/S系統(tǒng)經(jīng)常采用的策略,這種分層方式將系統(tǒng)分為用戶服務(wù)
2、、業(yè)務(wù)服務(wù)和數(shù)據(jù)服務(wù)三部分,能夠解決客戶端與服務(wù)器結(jié)構(gòu)維護(hù)成本問題、改善客戶端與服務(wù)器結(jié)構(gòu)延展性問題;解決應(yīng)用邏輯重復(fù)使用的問題;還能夠滿足整合不同系統(tǒng)結(jié)構(gòu)的需要與及時應(yīng)用新技術(shù)的需要。但在實際應(yīng)用中,如何更好的利用這種分層方式來解決實際項目中的問題,一直是程序設(shè)計者不斷探索的方向。本文主要就DLL封裝業(yè)務(wù)邏輯的實現(xiàn)方法進(jìn)行探討。
1界面與業(yè)務(wù)邏輯的分離
MIS系統(tǒng)經(jīng)常采用C/S結(jié)構(gòu)來處理,在實際使用中用戶界面與業(yè)務(wù)處理并沒有進(jìn)行詳細(xì)的區(qū)分,這樣編寫出來的程序?qū)哟螐?fù)雜,不僅閱讀不夠清晰,對于以后進(jìn)行修改和維護(hù)也會遇到很大的困難,同時降低了代碼的可復(fù)用性與可擴(kuò)展性,所
3、以在編寫程序時需要將界面與業(yè)務(wù)邏輯進(jìn)行分離,以此來降低數(shù)據(jù)的傳輸量、減少對客戶端影響以及增強(qiáng)系統(tǒng)的安全性和健壯性,提高程序的可復(fù)用性和可擴(kuò)展性。在用戶層與業(yè)務(wù)層分離時,應(yīng)盡量使客戶端更“瘦”,將復(fù)雜的算法和業(yè)務(wù)邏輯規(guī)則放在中間層來處理,而數(shù)據(jù)層只用來保證提供給中間層所有的數(shù)據(jù)和操作能夠正常進(jìn)行。
例如:在進(jìn)銷存系統(tǒng)中對于貨品的銷售過程中供應(yīng)商提供了對某種貨品的保價處理,那么在銷售時就不能對保價貨品隨意出售,需要對商品進(jìn)行保價檢查,如果是保價商品,則需經(jīng)過特別處理或者不予銷售,而對非保價商品就可以直接進(jìn)行銷售。下面是一段處理代碼:
IfNo_BJthen//No_b
4、j變量用來確定該商品是否是保價商品
Begin
{保價或不予銷售代碼}
{界面處理代碼a}
End
Else
Begin
{銷售代碼}
{界面處理代碼b}
End
上面這段代碼將業(yè)務(wù)處理代碼與界面處理代碼放在一起,我們可以使用下面的代碼對其進(jìn)行
分離:
FunctionSfbj_Sp(no_bj:boolean):Boolean;
Begin
Ifno_bjthen
Begin
{保價或不予銷售代碼}
Result:=true;
End
Else
Begin
{銷售代碼}
Result:=false;
End;
End;
5、
此段代碼放在業(yè)務(wù)處理中,界面中有下面這段代碼:
IfSfbj(no_bj)then
Begin
{界面處理代碼a}
End
Else
Begin
{界面處理代碼b}
End;
分析這兩段代碼的不同點(diǎn),從中可以看出,后面這段代碼使界面處理與業(yè)務(wù)處理分開來進(jìn)行,從而使代碼結(jié)構(gòu)更加清晰、簡潔;更重要的是,即使對界面和業(yè)務(wù)邏輯進(jìn)行維護(hù)和修改,只需修改各自的處理代碼就可以了,增加了獨(dú)立性,同時也增加了程序的可復(fù)用性和可擴(kuò)展性。
2DLL封裝業(yè)務(wù)邏輯
動態(tài)鏈接庫給應(yīng)用程序提供了一種調(diào)用不在其執(zhí)行代碼中的函數(shù)的技術(shù)。而在這里為了給更好的復(fù)用業(yè)務(wù)處理代
6、碼和全局變量,Dll用來對業(yè)務(wù)邏輯進(jìn)行封裝,使業(yè)務(wù)邏輯部分和界面部分分別形成Dll和Exe文件,從而使程序的執(zhí)行更加高效。
為了實現(xiàn)對業(yè)務(wù)邏輯的封裝,首先要定義業(yè)務(wù)類,然后對其進(jìn)行繼承,實現(xiàn)具體的業(yè)務(wù)代碼。對于界面部分與業(yè)務(wù)部分的通信可以采用定義接口的形式來完成,在Delphi中我們可以使用Interface或抽象類來具體實現(xiàn),但在實現(xiàn)中要保持接口的穩(wěn)定,不能隨意對其進(jìn)行更改。如果想以后對其進(jìn)行擴(kuò)展或復(fù)用,還可以通過預(yù)留接口的方式來解決未來功能增長的需要。具體實現(xiàn)以下面這個例子來說明。
2.1首先是對庫存接口單元的定義,形成界面與業(yè)務(wù)通信的接口,為了實現(xiàn)多態(tài),只對
7、其進(jìn)行定義而不作具體實現(xiàn),在這里也可以預(yù)留接口。
IStock=interface
FuncitonSelect_Stock(sql_goods:string,Id_goods):Olevariant;
ProcedureSave_Stock(Insert_stock:string,Nam_goods,Id_goods,Date_goods,Num_goods
:variant);
ProcedureUpdate_Stock(Update_stock:string,Nam_goods