DDDを念頭に置いて設計しようとするN層アプリケーションがあります。アプリは REST サービスとして公開されます。状態パターンを利用するドメイン エンティティがあります。状態のインターフェースはこのようなものです
interface IDomainObjectState
{
void SetPassed();
void SetFailed();
void SetIncomplete();
void Pause();
void Block();
}
このエンティティには Status フィールドもあります。「Set」で始まる状態メソッドは、オブジェクトの状態が許せば、このフィールドを変更することになっています。
これにより、ドメイン内のコードをかなりクリーンにすることができますが、サービス レイヤーでは問題があります。別の REST リソースを使用してエンティティのステータスを変更します (たとえば、これPUT /result
を実行します)。私を泣かせる問題はswitch
、これら 3 つの方法のいずれかを選択するために DTO に導入された新しいステータスになっていることです (そして、それを行う唯一の方法はアプリケーション層にあると思います)。
3 つの「Set*」メソッドを 1 つにマージするのは良い考えですか? そうでない場合は、別のリファクタリングを提案してください。