我在哪里工作,我们已经多次讨论这个问题,并正在寻求一个完整的检查。下面是问题:Business Objects应该是数据容器(更像是DTO),还是应该包含可以在该对象上执行某些功能的逻辑。Business Objects - 容器还是功能?
示例 - 如果客户对象包含一些常用属性(名称,Id等),并且该客户对象还包含函数(Save,Calc等)?
一条推理说,将对象与功能(单一责任主体)分开,并将功能放入业务逻辑层或对象中。
另一种推理说,不,如果我有一个客户对象,我只想调用Customer.Save并完成它。为什么我需要知道如何保存客户,如果我消费对象?
我们最近的两个项目已经将功能与对象分开了,但是关于新项目的争论再次提出。哪个更有意义?
编辑
这些结果非常相似,我们的辩论。对一方或另一方投一票将彻底改变方向。还有其他人想要加2美分吗?
EDIT
Eventhough答案采样小,似乎大多数相信在业务对象的功能是可接受的,只要它是简单的,但持久性最好放在一个单独的类/层。我们会试试这个。感谢大家的输入......
只是澄清......你的想法是计算和其他简单的函数应该驻留在对象中,但持久性(即.db事务)应驻留在别处。我有这个权利吗? – Walter 2009-11-25 13:31:48
是的,这就是我要说的。当然,这不是唯一的方法。有些人喜欢有物体坚持自己。我通常不会。 – duffymo 2009-11-25 20:37:58
我们一直在讨论业务对象或None中的所有功能。这是我们从未想到的一种可能的妥协。 – Walter 2009-11-30 23:04:46