《解构领域驱动设计》第一次勘误
2023-06-13 09:17:38 时间
趁着这次出版社的重印,赶紧订正了书友发现的这些错误。让我感到惭愧的是,在公众号总结这些勘误时,发现仍有极少量错误未能在这次重印时指出,只有留待再下一次的重印了。
世间事,哪能尽善尽美?然而一些低级错误实不应犯,只有借此机会向购买书籍的读者朋友表示诚挚的歉意!
以下为本次勘误列表:
第5页:文本框下第三行,“就会是的”修改为“就会使得”,如下图所示:
第36页:倒数第四行行末:“成为领域分析建模、领域设计建模和领域分析建模的驱动力”,修改为“成为领域分析建模、领域设计建模和领域实现建模的驱动力”,如下图所示:
第153页,原代码为:
@Transactional(propagation=Propagation.REQUIRED)
public void placeOrder(Order order) {
try {
orderService.execute(order);
notificationService.send(notificationComposer.compose(order));
} catch (InvalidOrderException ex | Exception ex) {
// 日志记录为横切关注点
logger.error(ex.getMessage());
// ApplicationException派生自RuntimeException,事务会在抛出该异常时回滚
throw new ApplicationException("failed to place order", ex);
}
}
修改为:
@Transactional(propagation=Propagation.REQUIRED)
public void placeOrder(PlacingOrderRequest request) {
try {
Order order = request.to();
orderService.placeOrder(order);
notificationService.send(notificationComposer.compose(order));
} catch (InvalidOrderException | Exception ex) {
// 日志记录为横切关注点
logger.error(ex.getMessage());
// ApplicationException派生自RuntimeException,事务会在抛出该异常时回滚
throw new ApplicationException("failed to place order", ex);
}
}
如下图所示:
说明:本次勘误中,漏掉了catch语句中的ex变量的错误。
第195页,原代码为:
orderRepository.add(order);
shoppingCartService.removeItems(order.customerId(), Order.purchasedProducts());
inventoryClient.lock(LockingInventoryRequest.from(order));
修改为:
orderRepository.add(order);
shoppingCartService.removeItems(order.customerId(), order.purchasedProducts());
inventoryClient.lock(order);
如下图所示:
第261页,代码中的注释“//部”改为“//client”,如下图所示:
第269页,原代码为:
public static createFlight(String flightId, String ioFlag, ...)
缺少了返回值,应修改为:
public static Flight createFlight(String flightId, String ioFlag, ...)
如下图所示:
第384页,第二段第二行最后几个字“将其放在应有服务”修改为:“将其放在应用服务”,如下图所示:
第408页,代码段Absence类的构造函数错误地写成了Address构造函数:
public Address(String country, String province, String city, String street, String zip) {
this.country = country;
this.province = province;
this.city = city;
this.street = street;
this.zip = zip;
}
应修改为:
public Absence(LocalDate leaveDate, LeaveReason leaveReason) {
this.leaveDate = leaveDate;
this.leaveReason = leaveReason;
}
如下图所示:
若读者在阅读本书时发现错误,请在评论中不吝提出,作者在这里表示诚挚感谢!
相关文章
- 国外经典神作:领域驱动设计软件核心复杂性应对之道手册限时阅读
- DDD洋葱架构才是 yyds!阿里大牛手记(DDD)领域驱动设计应对之道
- P8架构师都要懂的微服务架构深度解析:微服务构建,领域驱动设计
- [答疑]《实现领域驱动设计》的译者其实没错?(一)
- 幻灯片01-剔除“伪创新” 的领域驱动设计-概述
- 领域驱动设计四论
- DDD 领域驱动设计落地实践系列:战略设计和战术设计
- DDD领域驱动设计如何进行工程化落地
- 《解构领域驱动设计》全局分析篇
- 《解构领域驱动设计》融合篇
- 《解构领域驱动设计》第一章
- 领域驱动设计对依赖的控制
- 领域驱动设计随感录
- 《解构领域驱动设计》思维导图
- Drools 规则引擎—-向领域驱动进步(七)详解编程语言
- Drools 规则引擎—-向领域驱动进步(六)详解编程语言