我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好
在设计审查期间,每当新行为被添加到系统时,SRP被引出,因此新行为通常在一个新类中结束。这使事情很容易单元测试,但我有时感到困惑,因为它感觉像把行为从相关的地方。
我试图提高我的理解如何正确应用SRP。在我看来,SRP是反对添加业务建模行为,共享相同的上下文到一个对象,因为对象不可避免地要么做多个相关的事情,或做一件事,但知道多个业务规则,改变形状的输出。
如果是这样,那么感觉最终的结果是一个贫血域模型,这在我们的项目中肯定是这样。然而,贫血领域模型是一种反模式。
这两个想法可以共存吗?
编辑:几个上下文相关的链接:
SRP-http://www.objectmentor.com/resources/articles/srp.pdf
贫血领域模型 – http://martinfowler.com/bliki/AnemicDomainModel.html
我不是那种只是想找到先知,跟随他们说的福音的开发者。所以我不提供链接到这些作为一种说明“这些是规则”的方式,只是作为这两个概念的定义的来源。