Jive中的设计模式问题

最近看了Jive的源码,感觉收获极大。就想把一些方法在我们的项目中应用,但是遇到了一些问题,请各位大虾指教!
Jive 中针对论坛中的对象定义了一系列的接口,比如:Forum,ForumThread,ForumMessage等,通过ForumFactory可以创建这些对象。然后Jive针对这些接口做了数据库的实现,比如DbForum,DbFrumThread,DbForumMessage,DbForumFactory等,这样创建对象的话必须要通过工厂。

但是这些工厂创建的都是比较简单的对象,比如对于DbForum,用户的输入可能就是name和description,因此,创建论坛的方法是
Forum createForum(String name, String description) ,用户拿到Forum对象以后,可以调用一些方法来更改对象,比如:
setModifiedDate(Date modifiedDate),该方法会调用saveToDb()来更新数据表中的纪录。
但是创建复杂的对象这样做是否合适,比如有下面的对象:
class A
{
String name;
Vector v; //v中保存的是一系列b对象
}
class B
{
String name
.....
}
这时候工厂方法是不是就不太适用了?

另外在DbForum中setName,setDescription,setCreationDate等方法都要调用saveToDb来更新数据库,因为用户的修改可能大多是

setName,setDescription,这样做代价也许并不是很大,但是如果一个对象需要频繁更新,比如上面的class A有很多成员变量,都需

要更新,并且更新的代价很高(例如需要保存到文件中),这时候怎么办?我的想法是在class A中设置一个save()方法,对一个对

象做完所有的修改后再调用该方法,把对象进行持久化,但是程序员可能经常忘了调用该方法。有什么好的模式来解决?

一个DbForum对象在用户关心的可能只是name和description,因此通过jsp可以很容易的把DbForum对象显示出来,并且获取用户的输入,进行修改。复杂的对象在浏览器中如何呈现?如何获取用户的输入进行修改?通过一些表单来传递参数可能太复杂,太繁琐了。

使用工厂模式的用意有两个:一是屏蔽不同产品类直接的区别,客户端只需关注抽象的接口。第二个就是屏蔽产品类创建的复杂过程。所有是否使用工厂模式与对象的复杂度没有直接的关系。当然了,我们需要一定的标识来告诉工厂创建什么样的产品。