【问题标题】:Should collections also be responsible for creating objects? (Single Responsibility Pattern)集合是否也应该负责创建对象? (单一职责模式)
【发布时间】:2009-03-10 23:11:54
【问题描述】:

对象集合是否也应该负责创建新对象?

让我解释一下。我有两个类,PhoneCall 和 PhoneCallList。 PhoneCallList 是 PhoneCall 对象的集合。我们的架构师和我在如何创建新的 PhoneCall 对象上存在分歧。目前,PhoneCall 对象有一个名为 Create 的方法,可以将记录添加到数据库中,而 PhoneCallList 对象有一个名为 Add 的方法,可以将 PhoneCall 添加到列表中。

架构师希望 PhoneCallList 中的 Add 方法也在数据库中创建新记录并将其添加到集合中。这样做是否违反了单一责任原则?对我来说,感觉这不是解决这个问题的最佳方式。

最好的方法是什么?

*两个对象都不知道数据库。负责所有数据访问的呼叫服务。问题是 PhoneCall 或 PhoneCallList 对象应该调用进行数据访问的服务吗?

【问题讨论】:

    标签: design-patterns collections


    【解决方案1】:

    关于上下文,我有很多不确定的地方,但它看起来像两个问题。谁应该创建一个 PhoneCall 对象以及谁应该将一个 PhoneCall 添加到数据库中。我建议 PhoneCall 对象由操作 PhoneCallList 的任何更高层模块创建,并将其传递给 PhoneCallList 的“添加”函数。我也倾向于两个班级都没有做数据库条目。这听上去是上三等课的好理由。

    【讨论】:

    • +1,为什么这两个类中的任何一个都知道数据库。事实上,这将违反单一责任原则
    • 我很高兴听到他们不了解数据库,但他们也不应该了解管理数据库的服务。 'Something' 应该将一个 PhoneCall 对象传递给 PhoneCallList,而 'Something' 也应该传递它需要的任何服务。
    猜你喜欢
    • 2011-03-17
    • 2010-10-22
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-31
    • 2013-06-24
    相关资源
    最近更新 更多