发布于 2019-02-18 16:40:57
我认为这里的许多混乱是由于关注数据而不是行为造成的。DDD的目的是对系统的功能需求进行建模,以提供业务领域的有用摘要。这意味着我们根据行为建模,让支持我们行为的数据成为实现细节。所以让我们从这里开始!
你所描述的系统,就行为而言,实际上相当简单。让我们首先列出您的用例(从您的问题中收集):
DocumentDocument属性值Document考虑到以上所述,现在让我们创建一些命令处理程序:
<#>CreateDocumentHandler
DocumentType dt = documentTypes.Find( cmd.DocumentTypeId );
Document doc = dt.CreateEmptyDocument( cmd.UserId ); // factory method
documents.Add( doc );<#>ChangeDocumentHandler
Document doc = documents.Find( cmd.DocumentId );
doc.ChangeAttribute( cmd.AttributeName, cmd.AttributeValue );
documents.Save( doc );<#>批准ApproveDocumentHandler
Document doc = documents.Find( cmd.DocumentId );
doc.Approve(); // approval process is part of document
documents.Save( doc );从这里开始,我想你可以填补空白。
https://softwareengineering.stackexchange.com/questions/387360
复制相似问题