- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 DDD 世界中推荐哪种方法......为什么?
aggregateRoot.Items.Add(...)
aggregateRoot.AddItem(...)
我认为第一个选项更好,因为它与无处不在的语言更相关。
我应该在 aggregateRoot 上公开一个只读的 (IEnumerable) 集合和一些 AddItem()/RemoveItem()/等(选项 1)还是公开一个强类型的集合(我不喜欢公开 IList< T > 甚至更糟, List< T >) 支持添加/删除/等(选项 2)。
最佳答案
两者都有各自的用途,具体取决于您要向用户呈现的 API 类型。
如果您正在封装一个您不希望用户直接访问的集合,那么您可以使用 AddItem() 作为一种相当容易 self 发现的方法来帮助用户向其中添加项目。
如果您的对象按原样公开集合,那么 Items.Add() 是一致的集合行为,可能是最佳选择。
关于c# - 推荐哪种方法 : aggregateRoot. Items.Add(...) or aggregateRoot.AddItem(...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1236351/
在 DDD 世界中推荐哪种方法......为什么? aggregateRoot.Items.Add(...) aggregateRoot.AddItem(...) 我认为第一个选项更好,因为它与无处不
我有一个聚合根 Order 及其子聚合 OrderLine,我试图在不使用 ORM 框架的情况下实现存储库模式,仅使用 ADO.Net,说实话,我的大脑堆栈有点溢出。 我学到的一种方法是使用 Proj
基本上,问题是: how to correctly build an event storage for an event sourced system that should be able to
DDD 中众所周知的建议是聚合根不使用域服务。域服务是协调两个聚合根来实现一个行为。 当我看到 Rinat Abdullin 写的标题为 Building Blocks Of CQRS 的博客时,我真
我最近开始了一个使用现有数据库(Oracle)和 MVC 4 的项目。已经进行了很多编码..但是代码中没有“策略”..只有 DB -> ORM -> Controller。因此,我正在尝试为开发添加一
我是一名优秀的程序员,十分优秀!