【问题标题】:How TableData gateway differs from Rowdata Gataway?.. need clarification表数据网关与 Rowdata 网关有何不同?.. 需要澄清
【发布时间】:2012-02-17 23:17:22
【问题描述】:

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

【问题讨论】:

    标签: design-patterns poeaa


    【解决方案1】:

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

    虽然 Table Data Gateway 具有返回 RecordSets 的 find 方法,但使用 Row Data Gateway,您需要一个单独的 Finder 类,它每行返回一个网关类。

    您是否使用其中任何一种以及使用哪种是与您选择正在使用的其他模式相关的复杂决策。

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

    Table Data Gateway 更简单,所以如果它能满足您的需求,它可能是正确的选择。

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

    【讨论】:

    • 有趣的是,我正在重构但不重写的当前遗留应用程序实际上合理地利用了所有这些以及活动记录:)。
    • “遗留代码”通常与其建议的替代方案不同,因为它实际工作和扩展。 --- Bjarne Stroustrup
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-12
    • 1970-01-01
    • 1970-01-01
    • 2023-01-04
    • 2014-07-04
    相关资源
    最近更新 更多