我最近一直在阅读 TableData Gateway 和 RowData Gateway。根据“企业应用程序架构模式”,RDG 一次处理一条记录,而 TDG 处理整个表。但这两种模式看起来非常相似,它们封装了 SQL 查询并根据我们所做的查询在记录集中返回一条记录或多条记录。我真的不知道什么时候更喜欢 TDG 而不是 RDG。用一些解释来澄清差异会非常有帮助。根据 Martin Fowler 的说法,TDG 是返回一条记录时与RDG相同。但是我们也可以将RDG用于多条记录!那为什么要使用TDG。任何帮助将不胜感激。谢谢你。
问问题
4061 次
1 回答
9
行数据网关封装了对数据库中一行的访问,而表数据网关封装了表级别的访问,在我看来,一个根本不是另一个的退化形式。
虽然 Table Data Gateway 具有返回 RecordSets 的 find 方法,但使用 Row Data Gateway,您需要一个单独的 Finder 类,它每行返回一个网关类。
是否使用其中一个以及使用哪个是与您选择使用哪些其他模式相关的复杂决策。
从他在“何时使用它”部分关于这两种模式的讨论来看,如果使用域模型模式,他更喜欢使用Active Record,而不是任何一种。这两种网关模式都可以与Transaction Script结合使用。
表数据网关更简单,因此如果它满足您的需求,它可能是正确的选择。
您可能永远不会在单个应用程序中同时使用这两种模式。
于 2011-07-24T15:44:01.310 回答