加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 01:18:50 所属栏目:百科 来源:网络整理
导读:我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好 在设计审查期间,每当新行为被添加到系统
我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好

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

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

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

这两个想法可以共存吗?

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

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

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

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读