oop – 单一责任原则vs贫血领域模式反模式

前端之家收集整理的这篇文章主要介绍了oop – 单一责任原则vs贫血领域模式反模式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好

在设计审查期间,每当新行为被添加到系统时,SRP被引出,因此新行为通常在一个新类中结束。这使事情很容易单元测试,但我有时感到困惑,因为它感觉像把行为从相关的地方。

我试图提高我的理解如何正确应用SRP。在我看来,SRP是反对添加业务建模行为,共享相同的上下文到一个对象,因为对象不可避免地要么做多个相关的事情,或做一件事,但知道多个业务规则,改变形状的输出

如果是这样,那么感觉最终的结果是一个贫血域模型,这在我们的项目中肯定是这样。然而,贫血领域模型是一种反模式。

这两个想法可以共存吗?

编辑:几个上下文相关的链接

SRP-http://www.objectmentor.com/resources/articles/srp.pdf
贫血领域模型 – http://martinfowler.com/bliki/AnemicDomainModel.html

我不是那种只是想找到先知,跟随他们说的福音的开发者。所以我不提供链接到这些作为一种说明“这些是规则”的方式,只是作为这两个概念的定义的来源。

我不得不说“是”,但你必须正确地做你的SRP。如果相同的操作只适用于一个类,它属于该类,你不会说?如果相同的操作适用于多个类怎么样?在这种情况下,如果你想遵循组合数据和行为的OO模型,你可以把操作放到一个基类中,没有?

我怀疑从你的描述,你结束了基本上是包的操作的类,所以你基本上重新创建了C风格的编码:结构和模块。

链接的SRP文件:“SRP是最简单的原则之一,也是最难得到的一个。

猜你在找的设计模式相关文章