ITPub博客

首页 > > > 你确定它真的需要ID吗

你确定它真的需要ID吗

作者:unnamed persona 时间:2019-12-05 11:58:01 0 删除 编辑

还记得我们在上一篇文章 如何运用DDD - 值对象 中所提到过的一个问题吗? “当前上下文的值对象可能是另一个上下文的实体”。所以说,当前你所判定的实体一定是基于领域当前环境(上下文)的。脱离了该环境之后,一切都将存在变数。同样的事物(对象),在当前环境需要一个唯一标识来识别它,而在另一个环境中可能这个唯一标识对它来说是没有意义的,则实体就有可能成为了值对象。请考虑下面的这个例子:

在一个银行业应用程序中,一位顾客可能会在她的银行账户中放入100美元。当她未来某一天提取她这100美元时,相较于她存进银行的钱,她可能会收到不同的钞票或硬币。不过,这一差异是无关紧要的,因为资金的身份不重要;顾客只关心资金的价值。所以在这个领域中,资金无疑是一个值对象。但在另一个领域中,比如涉及钞票印刷制作或钞票可追溯性的行业,个体钞票或硬币的身份实际上可能就是一个重要的领域概念了。所以每一张钞票都会是一个具有唯一标识符的实体

运用实体

结合值对象

千万不要忘记了我们上一章所学习到了的值对象:在实体的内部,除了它自己的唯一标识ID之外,也许还有许许多多表明它属性的东西,而这些东西往往可以通过使用值对象来标识。

接下来让我们来改写一下上面的Itinerary类:

publicclassItinerary{publicintID {get;set; }publicList Participants {get;set; }publicList

Places {get;set; }publicItineraryNote Note {get;set; }publicItineraryTime TripTime {get;set; }publicItineraryStatus Status {get;set; }}publicclassItineraryNote{publicstringContent {get;set; }publicDateTime NoteTime {get;set; }publicItineraryNote(stringcontent){ Content = content; NoteTime = DateTime.Now; }}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69949628/viewspace-3131142/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-12-04

  • 博文量
    158
  • 访问量
    0