【发布时间】:2012-04-26 03:24:45
【问题描述】:
假设我有一个简单的 todolist:
interface ITodoList
{
ITodoItem Create(title);
IEnumerable<ITodoItem> Items {get;}
}
interface ITodoITem
{
void StartTrackTime();
void StopTrackTime();
}
现在我想强制执行,以便一次只跟踪一项(每个用户)的时间。
我是否应该创建像ItemTimeTrackingStarted 这样StartTrackTime 生成的域事件。该事件将由ITodoService 获取,该ITodoService 检查当前用户是否有任何其他时间跟踪项目(并停止它们)。还是有更好的办法?
【问题讨论】:
-
IMO,ITodoService 将被命名为 ITodoPolicy,因为它正在尝试执行规则而不是执行事务。如果跟踪的 TodoItem 是 TodoList 中的第一个,那么您正在使用 FIFO 集合,对吗?
-
你是不是错过了 TodoList.AssignItemTo(User user) 或 UserTimeTracking.StartTrackingTimeFor(TodoItem item) 之类的东西?
标签: c# architecture domain-driven-design