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物件顯示出來,並且獲取使用者的輸入,進行修改。複雜的物件在瀏覽器中如何呈現?如何獲取使用者的輸入進行修改?透過一些表單來傳遞引數可能太複雜,太繁瑣了。
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物件顯示出來,並且獲取使用者的輸入,進行修改。複雜的物件在瀏覽器中如何呈現?如何獲取使用者的輸入進行修改?透過一些表單來傳遞引數可能太複雜,太繁瑣了。
相關文章
- 設計模式 - ASM 中的訪問者模式設計模式ASM
- 【設計模式】漢堡中的設計模式——策略模式設計模式
- 設計模式:原型模式介紹 && 原型模式的深拷貝問題設計模式原型
- Android面試題之Android中的設計模式Android面試題設計模式
- 【設計模式】漢堡中的設計模式——觀察者模式設計模式
- Mybatis中的設計模式MyBatis設計模式
- Ruby中的設計模式設計模式
- php中的設計模式PHP設計模式
- javascript中的設計模式JavaScript設計模式
- 設計模式專題-策略模式設計模式
- 設計模式習題設計模式
- 設計模式(十六)——訪問者模式設計模式
- 聊聊OOP中的設計原則以及訪問者模式OOP模式
- OO設計模式中的工廠模式設計模式
- 設計模式中的觀察者模式設計模式
- 設計模式(七)Android中的代理模式設計模式Android
- 設計模式(三)Animation中的策略模式設計模式
- 如何避免微服務設計中的耦合問題微服務
- 設計模式這話題,我面試又被問了設計模式面試
- 極簡設計模式-訪問者模式設計模式
- 原始碼中的設計模式--模板方法模式原始碼設計模式
- 原始碼中的設計模式--工廠模式原始碼設計模式
- Android 中的設計模式:觀察者模式Android設計模式
- 產品設計中,DFMEA存在的問題有哪些?
- 萬智牌設計中的數學問題(上)
- 設計模式應用場景之Model設計中可以用到的設計模式設計模式
- 設計模式(二十)——備忘錄模式(遊戲角色狀態恢復問題)設計模式遊戲
- Java中的設計模式詳解Java設計模式
- 【趣味設計模式系列】之【訪問者模式】設計模式
- C++設計模式 - 訪問器模式(Visitor)C++設計模式
- 設計模式學習之訪問者模式設計模式
- C#設計模式之訪問者模式C#設計模式
- 原始碼中的設計模式--裝飾器模式原始碼設計模式
- Python 中的設計模式詳解之:策略模式Python設計模式
- Java中的設計模式(一):觀察者模式Java設計模式
- 設計模式(八)Context中的裝飾者模式設計模式Context
- 設計模式在 TypeScript 中的應用 – 策略模式設計模式TypeScript
- 【譯】原則問題:直面設計中的核心實質
- 架構設計模式主要用於解決什麼問題?架構設計模式