【发布时间】:2021-01-31 10:33:54
【问题描述】:
我正在使用六边形架构在 DDD 中实施一个项目。
我正在尝试遵循所有避免贫血域模型的最佳实践,但我遇到了这个问题。
我有一个具有属性优先级的实体客户端,为了计算这个优先级,我使用了对外部 API 的休息调用。
我想避免在实体上使用 setPriority 方法,所以我提出了这个解决方案,但我不确定它实际上是否“符合 DDD”。
这里是伪代码:
//DOMAIN
interface PriorityService {
public int exec(Client client);
}
class Client {
....
public void calculatePriority(PriorityService service) {
this.priority = service.exec(this);
}
}
//INFRASTRUCTURE
class ThirdPartyPriorityService implements PriorityService{
...
public int exec(Client client) {
int priority = this.externalApi(...);
return priority;
}
}
我发现这种方法集成第三方服务非常简单有效,实体是唯一负责其内部状态一致性的,但我可以轻松集成不同的系统。
有没有更好的方法(最好不使用 setter)?
【问题讨论】: