oop – 单一责任原则vs贫血领域模式反模式
我在一个项目,相当严肃地承担单一责任原则。我们有很多小班,事情都很简单。然而,我们有一个贫血领域模型 – 在我们的任何模型类中没有行为,它们只是属性袋。这不是对我们的设计的投诉 – 它实际上似乎工作得很好
在设计审查期间,每当新行为被添加到系统时,SRP被引出,因此新行为通常在一个新类中结束。这使事情很容易单元测试,但我有时感到困惑,因为它感觉像把行为从相关的地方。 我试图提高我的理解如何正确应用SRP。在我看来,SRP是反对添加业务建模行为,共享相同的上下文到一个对象,因为对象不可避免地要么做多个相关的事情,或做一件事,但知道多个业务规则,改变形状的输出。 如果是这样,那么感觉最终的结果是一个贫血域模型,这在我们的项目中肯定是这样。然而,贫血领域模型是一种反模式。 这两个想法可以共存吗? 编辑:几个上下文相关的链接: SRP-http://www.objectmentor.com/resources/articles/srp.pdf 我不是那种只是想找到先知,跟随他们说的福音的开发者。所以我不提供链接到这些作为一种说明“这些是规则”的方式,只是作为这两个概念的定义的来源。
我不得不说“是”,但你必须正确地做你的SRP。如果相同的操作只适用于一个类,它属于该类,你不会说?如果相同的操作适用于多个类怎么样?在这种情况下,如果你想遵循组合数据和行为的OO模型,你可以把操作放到一个基类中,没有?
我怀疑从你的描述,你结束了基本上是包的操作的类,所以你基本上重新创建了C风格的编码:结构和模块。 从链接的SRP文件:“SRP是最简单的原则之一,也是最难得到的一个。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- oracle无监听程序的解决方法(PLSQL)Oracle ORA12514 监听
- postgresql – 随着搜索字符串变长,Trigram搜索速度会慢得多
- react-native电影简介app,了解一下?(android端)
- ruby-on-rails – ruby中两个哈希值之间的变化
- IP地址判断有效性
- 移植U-Boot-2008.10到友善之臂mini2440(三)
- objective-c – 在UIImagePickerController中点击使用后保存
- c++,在class内部获得this指针的shared_ptr
- c – 为什么左折叠表达式不会反转右折叠表达式的输出?
- SQLite3 C/C++介绍