三层结构和印度模式的讨论

80酷酷网    80kuku.com

  在研究WEBSERVICES的时候,调用WEBSERVICES并不用直接与数据库打交道。在传统的C/S应用程序中,完全可以采用这种业务分层方式。对数据表的访问,一般都是一维和二维结构,这样,我们可以构建高可重用的数据库读写模块。例如:
Function ReadData(TableName as String,SQLstring as String) as Object
...
End Function
    这个函数以数组的形式返回一维或二维的记录集,其中一维数组表示一条记录,二维数组返回N条记录。SQLstring为查询条件。
Function WriteData(TableName as String,RecArray as Object) as Boolean
...
Rs.Open "select * from 主键=RecArray(N)",...
if Rs.eof then
    Rs.addnew    '若记录不存在,添加新记录
else
    For i=0 to Rs.field.count-1
        rs.field(i).value=RecArray(i)
    next
end if
Rs.Update
...
End Function
    这里以添加一条记录为例,数组长度=字段数。若记录存在则更新,否则则添加新记录。
    有文章说印度人喜欢使用大数组,其实是很有效率的。我们在数据查询/修改模块里建立一个全局数组。在Form_load事件中将记录读取到数组中(一维数组记录一条记录,二维数组记录N条记录),这样我们在修改/增加记录时,同时修改该数组。这样我们在刷新显示数据时,只需显示数组的相应记录即可。而保存时,调用上面的写数据函数即可完成。
    这样做的好处是,不管怎样修改记录,我们只需执行一次数据读取函数,即使数据更新,也简单的从数组中选取相关的记录即可。
    采用这种严格分层的编程方式,编程思路相对简单,代码的重用性非常高。对于团队合作并行设计的编程思路,是一个行之有效的方法。
    简单探讨,欢迎有类似设计思路的朋友批评和讨论。


分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: