形成界面与业务通信的接口,为了实现多态,只对其进行定义而不作具体实现,在这里也可以预留接口。
IStock=interface
Funciton Select_Stock(sql_goods:string,Id_goods):Olevariant;
Procedure Save_Stock(Insert_stock:string,Nam_goods,Id_goods,Date_goods,Num_goods
:variant);
Procedure Update_Stock(Update_stock:string,Nam_goods,Id_goods,Num_goods:variant);
Procedure Delete_Stock(Delete_stock:string:Id_[FL)]
[HT][HJ*4][HT5”SS] 盛永生,等 • Delphi中DLL封装业务逻辑的实现[JY,1]2008年第
10期[HT][CDF46][HT][HJ*8][HT5”,5SS][FL(2K2]
goods);
End;
2.2 具体实现库存业务类,它继承了Istock接口,具体实现了业务类,同时在这里也可以引用其他公共函数、数据处理单元等公共资源以供本单元使用。
TStock=Class(TinterfacedObject,ISto) //ISto为创建TStock类的函数
Constructor Create;
Destructor Destory;override;
Funciton Select_Stock(sql_goods:string,Id_goods):Olevariant;
Procedure Save_Stock(Insert_stock:string,Nam_goods,Id_goods,Date_goods,Num
_goods:variant);
Procedure Update_Stock(Update_stock:string,Nam_goods,Id_goods,Num_goods:variant);
Procedure Delete_Stock(Delete_stock:string:Id_goods);
End;
Implementation
{具体实现各函数、过程的功能,完成业务逻辑}
End;
2.3 在完成库存业务类后,即可对业务逻辑进行封装成DLL,具体代码如下:
Library Stock
Uses
ShareMem,Sysutils,Classes,
IStock in ''IStock.pas'',
TStock in ''Tstock.pas''
dataModule in ''dataModule.pas'' //用来处理TStock的数据模块,这里不做介绍
Function CISto:ISto;
Begin
Result:=TStock.Create; //创建TStock;
End;
Exports
CISto; //对外接函数的引用;
End;
2.4 编译生成Stock.dll文件后,用户界面部分就可以通过引用该文件对库存数据进行相应的操作,这样就实现了DLL封装业务逻辑,如果需要对业务类操作进行扩展和修改,可以通过修改接口函数或者预留接口来实现,只需重新编译即可而无需重新编译界面文件。
3 结论
通过对用户服务与业务服务的分离,实现了程序的可复用性、可扩展性,提高了系统的健壮性,解决了应用逻辑重复使用的问题,同时也为系统的后期维护提供了方便;尤其对B/S类系统和企业级系统来说所带了的好处是不言而喻的。使用DLL对业务逻辑类进行封装会更好的利用业务类与公共资源,摒弃全局变量,提高了程序的效率。
[参考文献]
[1] 飞思科技产品研发中心.Delphi分布式开发[M]北京:电子工业出版社,2002.
[2] John Ayres.Delphi Win32核心API参考[M]北京:中国电力出版社,2004.
[3] 董良,高磊等.Delphi6深入浅出[M]北京:清华大学出版社,2002.
[4] 飞思科技产品研发中心.Delphi下深入Windows核心编程[M]北京:电子工业出版社,2003.
[5] 李维.Delphi 5.x分布式多层应用系统篇[M]北京:机械工业出版社,2004.