我在一个认真对待单一职责原则的项目中。 我们有很多小class,事情很简单。 然而,我们有一个贫血的领域模型 – 在我们的任何模型类中都没有任何行为,它们只是属性包。 这不是对我们的devise抱怨 – 它似乎工作得很好 在devise评审过程中,无论何时将新行为添加到系统中,都会引发SRP,因此新行为通常会以新类别结束。 这使得unit testing非常容易,但是有时我感到困惑,因为感觉就像是在相关的地方拉动行为。 我试图提高我对如何正确应用SRP的理解。 在我看来,SRP反对增加业务build模行为,它们共享一个对象的相同上下文,因为对象不可避免地要做多个相关的事情,或者做一件事,但知道改变形状的多个业务规则的产出。 如果是这样,那么感觉最终的结果就是一个贫血的领域模型,这在我们的项目当然是这样的。 然而,贫血领域模型是一种反模式。 这两个想法可以共存吗? 编辑:几个上下文相关的链接: SRP – http://www.objectmentor.com/resources/articles/srp.pdf 贫血领域模型 – http://martinfowler.com/bliki/AnemicDomainModel.html 我不是那种喜欢寻找先知的开发者,而是追随他们所说的福音。 所以我不提供这些链接作为“这些就是规则”的一种说法,只是作为两个概念定义的来源。