数据库

本类阅读TOP10

·SQL语句导入导出大全
·SQL Server日期计算
·SQL语句导入导出大全
·SQL to Excel 的应用
·Oracle中password file的作用及说明
·MS SQLServer OLEDB分布式事务无法启动的一般解决方案
·sqlserver2000数据库置疑的解决方法
·一个比较实用的大数据量分页存储过程
·如何在正运行 SQL Server 7.0 的服务器之间传输登录和密码
·SQL中两台服务器间使用连接服务器

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
多类型业务处理设计技巧

作者:未知 来源:月光软件站 加入时间:2005-2-28 月光软件站

在企业应用开发中经常会出现多类型业务处理工作,一种好的设计方法会给应用和维护带来很大的收益,我们从一个简单的案例开始说起。

一个图书销售系统在客户付款结算处理:

客户分类:普通消费者、一般会员、VIP会员、其他类型待定。

处理要求:普通消费者不享受优惠

                  一般会员享受9.5折优惠

                  VIP会员享受8折优惠,外加累计积分

                  其他类型待定

下面就到具体实现了,在实现的时候我们大多数人都会想到给结算操作编写一个方法(函数),在函数中我们会这样写:

String ls_Customer_Type

Double ld_Payment

//取消费者类型

ls_Customer_Type  = ..............

if  ls_Customer_Type = 'G' then //普通消费者

    //处理过程

elseif  ls_Customer='V'//VIP消费者

      //处理过程

elseif

.....

end if

//其他处理

return ld_Payment

或者使用choose case来代替if  elseif语句,结构会倾斜些。

       这样的处理方法,对于调式、阅读、和以后新类型的增加都不大方便。假如每一个类型的处理都有很多行代码(几十行到上百行),大家在阅读的时候比较难受了,再增加一个新的类型就需要修改该方法,代码会更长,每个处理使用的变量也很容易出现交叉,程序容错变得困难。

       面对以上问题,我的设计方法是为每种类型单独创建一个方法,都提供一个相同的接口,再者还需要一个方法来接收请求和返回结果。这样,无论在调试还是运行的时候都很清晰,一个方法对应一个处理,增加新的类型的时候增加一个方法不需修改其他方法内容,程序阅读也相对轻松很多。

具体设计实现:

创建结算处理对象:uo_Balance

balance的方法:of_GetPayment(as_Customer_Type)               //外部访问处理

                         of_GetGeneralPayment()    //普通客户结算处理

                         of_GetVIPPayment()         //VIP会员结算处理

                         of_OtherPayment()           //其他处理

of_GetPayment 方法实现:

Double ld_Payment

choose case as_Customer_Type

         case 'G'                 //普通

                ld_Payment = of_GetGeneralPayment()

         case 'V'                 //vip

                ld_Payment = of_GetVipPayment()

         case else

                ld_Payment = of_OtherPayment()

end choose

return ld_Payment

of_GetGeneralPayment 方法实现:

Double ld_Payment

//结算处理

return ld_Payment

of_GetVIPPayment() of_OtherPayment() 处理方式与of_GetGeneralPayment()一致。

处理调用:

uo_Balance luo_Process

String ls_Customer_Type

Double ld_Payment

luo_Process = create uo_Balance

//取消费者类型

ls_Customer_Type  = ..............

ld_Payment = luo_Process.of_GetPayment()

//其他处理

到此设计完成。

以上是本人的个人经验总结,有不足之处请大家指正。




相关文章

相关软件