在这个问题中,有人回答说:“您永远不应该让域对象实现自己调用服务!”这是DDD的严格规定还是取决于您自己的应用程序和架构?
虚构的例子:
例如,假设我们的模型中有一个
虚构的例子:
例如,假设我们的模型中有一个
UserImage
对象,它由用户上传的图像填充。然后,假设我们可以将此图像提交给第三方服务,该服务可以识别指纹并返回Guid
(如果找到匹配项)。public IThumbPrintService {
Guid FindMatch(Bitmap image);
}
public class UserImage {
public Bitmap Image {get; set;}
public Guid ThumbPrintId {get; set;}
public bool FindThumbPrintMatch() {
// Would you call the service from here?
ThumbPrintId = _thumbPrintService.FindMatch(this.Image);
return ! ThumbPrintId.CompareTo(Guid.Empty);
}
}
public class RoboCopUserImageService : IUserImageService {
// Or move the call to a service method
// since it depends on calling a separate service interface
public bool FindThumbPrintMatch(UserImage userImage) {
userImage.ThumbPrintId = _thumbPrintService.FindMatch(userImage.Image);
return !userImage.ThumbPrintId.CompareTo(Guid.Empty);
}
}
如果不让领域对象自己调用服务,会避免或获得什么?
编辑:有没有好的在线文章讨论这个特定的主题?