我们有 N 层应用程序,我们尝试在设计时考虑到 DDD。该应用程序作为 REST 服务公开。我们有一个利用状态模式的域实体。状态的接口是这样的
interface IDomainObjectState
{
void SetPassed();
void SetFailed();
void SetIncomplete();
void Pause();
void Block();
}
该实体也有状态字段。如果对象的状态允许,以“Set”开头的状态方法应该更改此字段。
虽然这允许我们在域中拥有相当干净的代码,但在服务层却很痛苦:我们使用单独的 REST 资源来更改实体的状态(例如,我们PUT /result
要这样做)。让我哭泣的问题是,我们switch
在 DTO 的新状态下可以选择这三种方法中的一种(我猜唯一的方法是在应用程序层中)。
将三个“Set*”方法合并为一个是个好主意吗?如果没有,请建议另一个重构!