主題: 关于LifeType中DAO的问题 作者: asers 於 二月 22, 2008, 05:09:56 下午 LifeType贯穿始终都有一个很强的面向对象的味道,其中很多思想值得借鉴学习,唯一一点我想说一下我的观点,希望大家可以讨论一下:
在LifeType的dao目录中大量的数据对象模型,例如article / blogcategory 等等。以article为例,在获取单个文章时,使用这个模型无疑是上上之策,但是在获取一个列表时,articles的getBlogArticles方法里面,他使用了mapRow的方法将数据库的结果集压入article对象,然后返回这个对象,再然后把这些对象压入到一个数组,我想,这么做可以带来极大的便利,并可以让代码非常的优雅。但他所带来的负面影响却远胜于这些优点,例如资源消耗以及执行效率。 LifeType引入了DAO的模式,将数据层中的基础数据操作与复杂的数据逻辑分离开来,这无疑是一个非常不错的做法,但是这么做带来的资源占用确实不容小觑,尤其是在一个高并发的WEB应用中。我在下面描述一下一个可能的需求,看看LifeType的DAO将会如何工作: 一名用户发表了一篇Blog文章,LifeType将这篇文章压入Article对象(在LifeType中他们把这称作dbObject),然后将这个对象传递到articles的addArticle方法中,然后根据需求解析这个对象,并将数据写入到数据库中。如果我需要在发布后立即观看这篇文章,那么就存在的另外一个问题Lifetype需要取出数据再次写入到article对象中,然后再到模板中解析这个对象显示数据。或者说,我需要返回到文章列表,依然是无可避免的再次大量的对象被创建。 我十分想知道LifeType这么做的原因,处于维护角度还是强烈的OO思想使他们不得不这样做?我相信这样做并不会对程序效能有任何提升。它实际上是绕了一个圈子。 有错误之处希望大家能指出,不知道是否可以去掉这些过程,来提升效能以及对内存的占用。 |