Jive中的設計模式問題

onlylx發表於2003-06-26
最近看了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物件顯示出來,並且獲取使用者的輸入,進行修改。複雜的物件在瀏覽器中如何呈現?如何獲取使用者的輸入進行修改?透過一些表單來傳遞引數可能太複雜,太繁瑣了。

相關文章