【问题标题】:Does the DAO pattern spoils cohesion /SRP?DAO 模式是否会破坏凝聚力/SRP?
【发布时间】:2011-06-26 10:28:52
【问题描述】:

举个例子:

class AccountDAO {
    create(){..}
    read(){..}
    update(){..}
    delete() {..}
}

有多少责任? 1个还是4个?

【问题讨论】:

    标签: design-patterns dao single-responsibility-principle cohesion


    【解决方案1】:

    不应以严格的方式理解 SRP。一个对象应该有很少的职责,而不是“一个”。

    这里AccountDAO只负责Account持久化,所以它只有一个职责。

    【讨论】:

    • 应该如何描述这个类的责任?如果我说“AccoundDAO 负责帐户持久性”,这是 1 项责任,但如果我说“AccoundDAO 负责创建、读取、更新和删除”,则为 4 项。通常,文献表明,如果您需要用 AND 来描述它,它意味着不止一种责任。那么,哪个级别的描述是正确的?
    • 如果你是一名设计师/程序员,你的整个职业生涯都会遇到这个“粒度”(en.wikipedia.org/wiki/Granularity) 的问题。对于这个特定的 DAO 问题,“文献”说最好在一个类中实现所有 CRUD 操作(参见java.sun.com/blueprints/corej2eepatterns/Patterns/…)。如果您认为是有效的,请将我的回答标记为有效。
    • 我将标记为有效,因为您肯定为我制定的 DAO 课程回答了它,但我发现我错过了我提出问题的方式;我不是特定于 DAO,而是在寻找描述责任的正确粒度方式。我将在另一个问题中阐述它。
    • 我在这里发现了我同样的 DAO 问题 (stackoverflow.com/questions/2643547/…)。答案和你一样。此外,答案表明只要 DAO 只关注一个数据对象,SRP 就不会被破坏。
    猜你喜欢
    • 2011-05-21
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 2013-07-22
    • 2016-07-17
    相关资源
    最近更新 更多