集合是否也应该负责创建对象? (单一责任模式)

时间:2009-03-10 23:11:55

标签: design-patterns collections

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

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

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

哪种方法最好?

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

1 个答案:

答案 0 :(得分:1)

我对上下文有很多不确定但看起来像两个问题。谁应该创建一个PhoneCall对象以及谁应该将PhoneCall添加到数据库。我建议PhoneCall对象可以通过操作PhoneCallList的任何高级模块创建,并将其传递给PhoneCallList的“Add”函数。我也倾向于没有一个班级做DB入口。这听起来像是第三节课的好理由。