机房收费系统中的事务(二)

         在前一段时间,我写过一篇在机房收费系统使用事务的一篇博客,下面是链接地址

         http://blog.csdn.net/yjjm1990/article/details/7347853

        守宏师兄(http://blog.csdn.net/lsh6688)仔细看过之后,给出了自己的观点,并且指出了代码中的不足处。下面我将细细道来,希望对博友有些帮助,并希望大家提出宝贵意见!

        首先要说的是SQLHelper这个数据库助手类,在我的原文中,处理事务的方法是和执行非查询语句一起执行的。其实可以感觉到,这里就有了代码的“坏味道”,我们都知道职责单一原则。职责单一原则是对类而言的,而类又是由方法组成的,那么一个方法当然也应该做到职责单一。而在第一篇博文中的SQLHelper类里的ExecuteNonQuery其实就拥有两个功能,一个是执行含有事务的SQL;另一个是执行不含事务的SQL。这个判断是放在了SQLHelper类里,其实一个比较好的处理方法是把这个方法分成两个方法,一个是执行含有事务的SQL语句或存储过程,一个是执行不含有事务的SQL语句或存储过程。

    那么判断要怎么处理呢?

    最好是放在D层去处理。

    下面是一个方法清晰,功能完善的数据库助手类SQLHelper

   


      还有一点想强调和提醒大家的是,同样在上一篇博文中,我的事务处理是B层的事务处理的时候进行的。当然有一点我们是可以肯定的,就是事务处理一定是放在B层。我的做法是直接在B层处理事务。(详见我的上一篇博客)

                  下面是师兄的意见:

      那就是利用面向对象中的“抽象”,再抽象出一个事务管理类,用来管理B层的事务。这样就更加面向对象了。

      下面是事务管理类

      


                    通过和师兄讨论,我们认为两种方法都可以。第一种方法处理更加简单、方便,第二种方法更能体现面向对象的观点。

      希望大家提出宝贵意见!!!

posted on 2012-04-05 19:21  c语言源码  阅读(188)  评论(0编辑  收藏  举报

导航