Table Data Gateway如何与Rowdata Gateway不同?需要澄清

时间:2011-07-22 13:17:41

标签: design-patterns poeaa

我最近一直在阅读,TableData Gateway和RowData Gateway。根据“企业应用程序架构的模式”,RDG一次处理一条记录和TDG 这两个模式看起来非常相似,它们封装SQL查询,并根据我们的查询返回记录集中的单个记录或许多记录。我无法确定何时更喜欢TDG for RDG.It用一些解释来澄清差异是非常有帮助的。根据Martin Fowler TDG在返回一条记录时与RDG相同。但我们也可以将RDG用于多个记录!那么为什么要使用TDG。  任何帮助将不胜感激。 谢谢。

1 个答案:

答案 0 :(得分:9)

Row Data Gateway封装了对DB中某行的访问权限,而Table Data Gateway封装了表级别的访问权限,而在我看来,根本不是另一种形式的退化形式。

虽然Table Data Gateway找到了返回RecordSets的方法,但是使用Row Data Gateway,您需要一个单独的Finder类,每行返回一个网关类。

无论您使用哪种以及您使用哪种都是复杂的决定,您可以选择使用哪种其他模式。

从他在“何时使用它”的讨论中关于这两种模式的讨论,如果使用Domain Model模式,他宁愿使用Active Record。这两种网关模式都可以与Transaction Script结合使用。

表数据网关更简单,因此如果它能满足您的需求,那么它可能是正确的选择。

您不可能在单个应用程序中同时使用这两种模式。