単一責任の原則は、検証ルールがエンティティの外部にある必要があることを意味しますか?
その場合、検証ルールごとに1つのクラスを使用しますか?
単一責任の原則は、検証ルールがエンティティの外部にある必要があることを意味しますか?
その場合、検証ルールごとに1つのクラスを使用しますか?
私は通常、これを「エンティティ」とエンティティの検証は別の関心事であると解釈します。私は通常、エンティティ全体を検証できる単一のクラスを使用しますが、そのクラスが他のクラスを使用できないようにすることで、その実装を制限する理由はないと思います。ただし、エンティティに複数の属性があるという理由だけで、エンティティの検証を複数のクラスに分割することはしません。バリデーターの責任を「エンティティXの検証」と定義します。単一の責任は、巧妙な方法で責任を定義することに要約される場合があります。それは、実際にルールを作成することです。
プロセスの異なるフェーズにある複数の有効な状態を持つエンティティに出くわすことがあります。注文には、個別のフェーズに個別のバリデーターが含まれる場合がありますが、それは各バリデーターの異なる責任であると考えています。