【问题标题】:Is Repository pattern an overkill存储库模式是不是矫枉过正
【发布时间】:2010-08-04 11:45:02
【问题描述】:

我使用存储库模式(DDD 和 POEAA)已有一段时间了。然而,我们的一些团队成员认为这只是额外的抽象层,没有必要。 我可以从他们的论点中看到一些好处。现代 ORM 解决方案(NHibernate 或 EF)几乎可以满足您的一切需求。我搜索并找到了一些关于此主题的文章,例如 thiscounterargument。那么存储库模式是不是有点过头了?

【问题讨论】:

    标签: .net design-patterns domain-driven-design repository-pattern poeaa


    【解决方案1】:

    这主要取决于您的问题的复杂性以及您的领域模型在解决方案中所扮演的角色。对于简单的解决方案,存储库可能是矫枉过正。但是对于具有健壮语言和不断变化的需求/要求的复杂领域,存储库是一个很好的、干净的抽象,它拥有领域对象的生命周期。许多 ORM 会做很多这样的事情,但是,在复杂的领域中,总会有一些领域活动在存储库中有意义,而开箱即用的 ORM 不支持这些活动。

    底线:这取决于上下文。

    【讨论】:

    • @Arnis - 这就是为什么作为开发人员,我们不仅有锤子,我们还有一个完整的工具箱。
    • @Martin 有些人只有胶带:)
    【解决方案2】:

    在单元测试中模拟数据访问是我使用存储库接口的主要原因。可维护性的另一个原因 - 您可以轻松实现缓存策略,或切换到其他数据访问实现,例如从服务而不是 DB 获取数据。

    【讨论】:

      【解决方案3】:

      我们在项目中使用存储库的一个原因是它强制我们的聚合根是谁(我们只允许 AR 存储库),以便您正确地使用 AR,而不是查询任何您喜欢的东西。

      正如 Al 提到的......它确实提供了一个很好的接口,可以在单元测试期间进行模拟。

      【讨论】:

        猜你喜欢
        • 2017-05-03
        • 2013-01-10
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 2014-10-31
        • 1970-01-01
        相关资源
        最近更新 更多