我是DDD的初学者。
我不知道谁负责有API请求的进程。
我不知道谁负责间接依赖于基础结构层的函数。
例如有Web API请求的函数。
例如,我正在创建网上购物系统,该系统支持订单取消。
// Simple but anemic
class Order {
id: number;
date: Date;
state: OrderState;
constructor(
...
) {
...
}
}
// Procedural
class OrderService {
private readonly orderRepository: OrderRepository;
constructor(
orderRepository: OrderRepository
) {
...
}
cancel(orderId: number): void {
orderRepository.update(orderId, { state: OrderSate.Cancelled });
}
}
// knowledgeable and dependent
class Order {
id: number;
date: Date;
state: OrderState;
private readonly orderRepository: OrderRepository;
constructor(
orderRepository: OrderRepository,
...
) {
...
}
cancel(): void {
orderRepository.update(this.id, { state: OrderSate.Cancelled });
}
}
我以为的模型
我是DDD的初学者。我不知道谁负责与API请求的过程。
业务逻辑属于域模型,编排属于应用程序。
因此,应用程序中的逻辑通常类似于...
Order order = orderRepository.get(orderId);
order.cancel();
但是谁来更新服务器中的数据库呢?如果order.cancel()只更新自己的内存,您的代码似乎还没有更新服务器中的数据库。这是我的想法。
这是个很重要的问题,不是吗?:)
当Eric Evans在他的书中第一次描述存储库模式时,他故意选择了一个具有集合语义的存储库模式,并建议事务管理应该是应用程序的关注点。
beginTransaction();
Order order = orderRepository.get(orderId);
order.cancel();
commitTransaction();
beginTransaction();
Order order = orderRepository.get(orderId);
order.cancel();
orderRepository.save(order);
commitTransaction();
本文向大家介绍什么是领域驱动设计(DDD)相关面试题,主要包含被问及什么是领域驱动设计(DDD)时的应答技巧和注意事项,需要的朋友参考一下 专注于核心领域逻辑 在模型上找到综合的设计 不断与领域专家合作,改进应用程序模型并解决与领域相关的问题
本文向大家介绍为什么需要域驱动设计(DDD)?相关面试题,主要包含被问及为什么需要域驱动设计(DDD)?时的应答技巧和注意事项,需要的朋友参考一下 映射领域 降低复杂性 可测试性 可维护性 知识丰富的设计 将业务和服务结合在一起 上下文集中 通用语言
我正在学习DDD概念,为了加强我的理解,我正在研究一些现实世界的例子。 我知道一个聚合应该只有一个通过根实体的入口点,一个聚合应该只有一个存储库(如果我完全理解错了,请纠正我) 现在假设有特定类型的消耗品,并且这些消耗品是从配送中心发送的。发送特定类型的消耗品取决于它们的数量,我的意思是,如果其中一个消费者对A型和B型的临界数量为10,并且这些项目的数量低于10,那么配送中心发送A型和B型消耗品。
我使用Jersey和嵌入式Tomcat开发了REST服务器。 当我的客户端使用Jersey向我的服务器发送请求并添加其值为UTF-8编码的请求参数时,我会收到服务器端解码的参数。 我的问题是,谁负责解码这个参数?是雄猫吗?球衣<我可以禁用此功能吗?
本文向大家介绍谈一下领域驱动设计相关面试题,主要包含被问及谈一下领域驱动设计时的应答技巧和注意事项,需要的朋友参考一下 主要关注核心领域逻辑。基于领域的模型检测复杂设计。这涉及与公司层面领域方面的专家定期合作,以解决与领域相关的问题并改进应用程序的模型。在回答这个微服务面试问题时,您还需要提及DDD的核心基础知识。他们是: DDD主要关注领域逻辑和领域本身。 复杂的设计完全基于领域的模型。 为了改
null 到目前为止,很容易。如果我们试图将规范应用到存储库,而又不破坏DDD模式或存在性能问题,那么问题就会出现。 应用规范的可能方法: 1)经典方法:在领域层使用领域模型进行规范 null null 3)与2)类似,但将规范作为持久层的一部分 这不起作用,因为域层需要参考规范。它仍将取决于持久层。 我们将在持久层中拥有业务逻辑。这也违反了DDD模式 4)与3类似,但使用抽象规范作为接口 nul