【发布时间】:2019-01-19 10:31:08
【问题描述】:
我是 DDD 的初学者。
我不知道谁负责处理 API 请求。
我不知道谁负责间接依赖于基础设施层的功能。
比如带有Web API请求的函数。
例如我正在创建在线购物系统,系统支持取消订单。
我想我在领域层有 2 个类候选来实现订单取消功能。 A:域服务 B:域对象
但我无法判断哪个更好。
我担心设计“A”过于程序化,看起来很乏味。
我还担心设计“B”会使领域对象过于博学和依赖。 (因为我认为对象应该尽可能简单)
设计候选A
// 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 });
}
}
设计候选人 B
// 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 });
}
}
【问题讨论】: