2011-07-22 29 views
7

我最近一直在閱讀有關TableData Gateway和RowData Gateway的信息。根據「企業應用程序架構模式」,RDG一次處理一條記錄,並且TDG 處理一個整個表。但是這兩個模式看起來非常相似,它們封裝了SQL查詢,並根據我們所做的查詢返回記錄集中的單個記錄或多個記錄。我無法確定什麼時候需要TDG用於RDG。它將是根據Martin Fowler的說法,TDG在返回一條記錄時與RDG相同,但我們也可以使用RDG作爲多條記錄,那麼爲什麼要使用TDG。 任何幫助將不勝感激。 謝謝。TableData網關與Rowdata Gataway的區別是什麼?需要澄清

回答

8

Row Data Gateway封裝了對數據庫中某一行的訪問,而Table Data Gateway封裝了表級別的訪問,並且在我看來,它並不是一個完全是另一個的退化形式。

雖然Table Data Gateway找到了使用行數據網關返回RecordSet的方法,但您需要一個單獨的Finder類,該類每行返回一個網關類。

無論您使用的是哪一種,以及您使用哪種複雜決策都與您選擇使用的其他模式有關。

從他在關於兩種模式的「何時使用它」部分的討論中,如果使用Domain Model模式,他寧願使用Active Record。這兩種網關模式都可以與Transaction Script結合使用。

表數據網關更簡單,所以如果它滿足您的需求,它可能是正確的選擇。

您不可能在單個應用程序中使用這兩種模式。

+0

謝謝你的幫助。 – Alex

+1

有趣的是,我正在重構但不重寫的當前遺留應用程序實際上使所有這些加上活動記錄的合理使用:)。 –

+0

「傳統代碼」通常不同於其實際工作和縮放比例。 --- [Bjarne Stroustrup](https://en.wikiquote.org/wiki/Bjarne_Stroustrup) – DaveBoltman