达达's 胡搞瞎搞工作室

此Blog搬到www.unbe.cn 去了,要找我讨论问题请到我的新Blog

大家觉得哪种封装更好

     DuDu借首页一用。。。希望不要把这个贴移走了,我想知道下大家的想法如何。多谢了。

    小弟看到有的持久层框架是把实体类操作的接口放在每个实体类中,比如ActiveRecode。假设要对Order类型的实体对象和User类型实体对象进行修改操作,代码就像这么写:

    Order.Update(_orderObj);    //假设前面已经声明一个Order类型对象_orderObj
    User.Update(_userObj);   //假设前面已经声明一个User类型对象_userObj

    而有的持久层框架是把操作接口放在一个公用的持久层类中,同样假设要对Order类型对象和User类型实体对象进性修改操作,代码就像这么写:

    DataProvider<Order>.Update(_orderObj);    //假设前面已经声明一个Order类型对象_orderObj
    DataProvider<User>.Update(_userObj);    //假设前面已经声明一个User类型对象_userObj

    我个人认为把操作放在实体类里代码可以更直观,但是感觉又有些职责越界了,似乎类似这些操作不是实体类应该具有的。但是又很难下一个定论,不知道博客园的各位大哥是怎么认为的。希望听听大家的意见。

    另外从上篇帖子《轻量级持久层框架的讨论》各位大哥的踊跃发言让我对我的持久层框架又有了新想法。

    henry兄提出可以用CodeDom代替反射以提高效率,并且附上了他的文章《利用CodeDom来解决反射性能问题》,从中我获得了一些灵感。我可以使用CodeDom把用于动态生成Sql语句与为实体对象赋值的代码生成在内存中,这样我就可以抽象出一个通用的DataProvider并且又不会因为使用反射而影响系统整体执行效率。关于这一点大家有什么看法和意见也可以继续提出。

posted on 2006-04-21 21:32  BG5SBK  阅读(1255)  评论(15编辑  收藏  举报

导航