欢迎来到天天文库
浏览记录
ID:6903302
大小:32.36 KB
页数:9页
时间:2018-01-30
《delphi中dll封装业务逻辑的实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、Delphi中DLL封装业务逻辑的实现 (黑龙江八一农垦大学,黑龙江大庆163319) 摘要:文章通过分析软件分层设计的优点,提出了对用户界面与业务逻辑进行分离,通过接口或抽象类实现两者间通信的方法,并对业务逻辑进行封装成动态链接库,以达到数据资源共享的目的,解决了应用逻辑重复使用问题,增加了系统的可复用性、可扩展性和健壮性。 关键词:分层设计;界面与业务逻辑分离;动态链接库 中图分类号:TP31文献标识码:A文章编号:1007—6921(XX)10—0142—02 三层结构是开发C/S或B/S系统经常采用的策略,这种分层方式将系统分为用户服务
2、、业务服务和数据服务三部分,能够解决客户端与服务器结构维护成本问题、改善客户端与服务器结构延展性问题;解决应用逻辑重复使用的问题;还能够满足整合不同系统结构的需要与及时应用新技术的需要。但在实际应用中,如何更好的利用这种分层方式来解决实际项目中的问题,一直是程序设计者不断探索的方向。本文主要就DLL封装业务逻辑的实现方法进行探讨。 1界面与业务逻辑的分离 MIS系统经常采用C/S结构来处理,在实际使用中用户界面与业务处理并没有进行详细的区分,这样编写出来的程序层次复杂,不仅阅读不够清晰,对于以后进行修改和维护也会遇到很大的困难,同时降低了代码的可复用性与可扩展性,所
3、以在编写程序时需要将界面与业务逻辑进行分离,以此来降低数据的传输量、减少对客户端影响以及增强系统的安全性和健壮性,提高程序的可复用性和可扩展性。在用户层与业务层分离时,应尽量使客户端更“瘦”,将复杂的算法和业务逻辑规则放在中间层来处理,而数据层只用来保证提供给中间层所有的数据和操作能够正常进行。 例如:在进销存系统中对于货品的销售过程中供应商提供了对某种货品的保价处理,那么在销售时就不能对保价货品随意出售,需要对商品进行保价检查,如果是保价商品,则需经过特别处理或者不予销售,而对非保价商品就可以直接进行销售。下面是一段处理代码: IfNo_BJthen//No_b
4、j变量用来确定该商品是否是保价商品 Begin {保价或不予销售代码} {界面处理代码a} End Else Begin {销售代码} {界面处理代码b} End 上面这段代码将业务处理代码与界面处理代码放在一起,我们可以使用下面的代码对其进行 分离: FunctionSfbj_Sp(no_bj:boolean):Boolean; Begin Ifno_bjthen Begin {保价或不予销售代码} Result:=true; End Else Begin {销售代码} Result:=false; End; End;
5、 此段代码放在业务处理中,界面中有下面这段代码: IfSfbj(no_bj)then Begin {界面处理代码a} End Else Begin {界面处理代码b} End; 分析这两段代码的不同点,从中可以看出,后面这段代码使界面处理与业务处理分开来进行,从而使代码结构更加清晰、简洁;更重要的是,即使对界面和业务逻辑进行维护和修改,只需修改各自的处理代码就可以了,增加了独立性,同时也增加了程序的可复用性和可扩展性。 2DLL封装业务逻辑 动态链接库给应用程序提供了一种调用不在其执行代码中的函数的技术。而在这里为了给更好的复用业务处理代
6、码和全局变量,Dll用来对业务逻辑进行封装,使业务逻辑部分和界面部分分别形成Dll和Exe文件,从而使程序的执行更加高效。 为了实现对业务逻辑的封装,首先要定义业务类,然后对其进行继承,实现具体的业务代码。对于界面部分与业务部分的通信可以采用定义接口的形式来完成,在Delphi中我们可以使用Interface或抽象类来具体实现,但在实现中要保持接口的稳定,不能随意对其进行更改。如果想以后对其进行扩展或复用,还可以通过预留接口的方式来解决未来功能增长的需要。具体实现以下面这个例子来说明。 2.1首先是对库存接口单元的定义,形成界面与业务通信的接口,为了实现多态,只对
7、其进行定义而不作具体实现,在这里也可以预留接口。 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
此文档下载收益归作者所有