暗黙的な構造制約

通常は明示する必要がないのでしょうが、自クラス自身の構造制約を判断する検証クラス(有効お買い上げ明細?、有効販売商品?、有効販売商品明細?)を明示するとこんな感じになります。

クラス自身が必ず暗黙的に検証ロジックを持つと考えれば、わざわざSepcificationとして明示する必要はなく、逆に冗長な感じがします。ただ、全ての検証ロジックを明示したい場合や個別の検証ロジックの責務を判断する場合に利用することは可能です。あと実装がこの構成になることはあります。