Domain driven design 将航线和货物分开的目的是什么
查看ddd示例应用程序,我无法理解为什么Domain driven design 将航线和货物分开的目的是什么,domain-driven-design,Domain Driven Design,查看ddd示例应用程序,我无法理解为什么Cargo对象需要对RouteSpecification进行单独的引用 将始发地、目的地和到达地ADLINE作为货物类别的一部分,并完全跳过此RouteSpecification类别,并公开诸如更新目的地和满足要求的Intinerary RouteSpecification用于验证行程是否满足货运路线等。但我不认为货运类本身无法处理此类任务的任何原因,这种分离的意义是什么 public class Cargo implements Entity<Ca
Cargo
对象需要对RouteSpecification
进行单独的引用
将始发地、目的地和到达地ADLINE
作为货物类别的一部分,并完全跳过此RouteSpecification类别,并公开诸如更新目的地
和满足要求的Intinerary
RouteSpecification用于验证行程是否满足货运路线等。但我不认为货运类本身无法处理此类任务的任何原因,这种分离的意义是什么
public class Cargo implements Entity<Cargo> {
...
private Location origin;
private Location destination;
private Date arrivalDeadline;
...
公共类货物实体{
...
私人位置来源;
专用位置和目的地;
私人日期到达热线;
...
如果您考虑从解决方案中完全重构RouteSpecification类的后果,您会发现,来源
、目的地
和到达日期
似乎在很多时候都是一起传递的。这是一个强有力的信号,表明这些值密切相关。“内聚性”是面向对象编程的一个原则,其中密切相关的概念在代码中紧密地放在一起,因此为了遵循这个原则,您可以将这三个概念放在一个类中
许多程序员都同意,在使用这些值的任何地方传递一个RouteSpecification对象都比分别传递源代码、目的代码和到达ADLINE更简单。如果您考虑到从sol完全重构RouteSpecification类的后果注意,您会发现
起点
、目的地
和到达终点线
似乎在大部分时间都在一起传递。这是一个强有力的迹象,表明这些值密切相关。“内聚性”是面向对象编程的一个原则,其中密切相关的概念在代码中紧密地放在一起,因此为了遵循这个原则,您可以将这三个概念放在一个类中
许多程序员都同意,在使用这些值的任何地方传递一个RouteSpecification对象都比分别传递源代码、目的代码和到达ADLINE更简单。在文档中走一走,列表中有一个有用的指针 为了跟上DDD的速度,最需要的帮助之一是一个正在运行的示例应用程序。从一组简单的函数和一个基于Eric Evans书中使用的cargo示例的模型开始 有鉴于此,我们可以合理地假设该设计的动机与本文第7章中的动机类似 交付规范定义了一个交付目标,该目标至少包括一个目的地和一个到达数据,但它可能更复杂 这一责任本来可以由货物对象承担,但交货规范的抽象至少有三个好处
货物。origin
和RouteSpecification。origin
实际上是不可互换的(origin是RouteSpecification的一部分,但RouteSpecification可以随时间而改变)
从
货物可以在运输过程中根据客户的要求重新安排路线,在这种情况下,为货物指定新路线并请求新路线
也可能发生货物意外走错路线的情况,这应通知适当的人员,并触发重新走错路线程序
版本一的代码还表明货物可能被误送(这与误送不同)
如果您仔细查看,您会发现它们以不同的方式处理错误方向;较新的版本通过替换路线规范,然后搜索匹配的路线来实现这一点。浏览文档,在中有一个有用的指针 为了跟上DDD的速度,最需要的帮助之一是一个正在运行的示例应用程序。从一组简单的函数和一个基于Eric Evans书中使用的cargo示例的模型开始 有鉴于此,我们可以合理地假设该设计的动机与本文第7章中的动机类似 交付规范定义了一个交付目标,该目标至少包括一个目的地和一个到达数据,但它可能更复杂 这一责任本来可以由货物对象承担,但交货规范的抽象至少有三个好处
But then why isn't origin a part of RouteSpecification?