クラスがインタフェースを実装すること
たまには言語化してみるか。
そもそも、インタフェースはドメインを抽象的に表現した概念、振る舞いを待つ。一方で、クラスはその概念を実際に表現したもの、いわば詳細。具体的な型。
その上で、クラスはインタフェースを実装する。つまり、インタフェースの概念を満たすようなメソッドを作成する。
メリット
ドメインルールの変更に強い
同じ階層に新しい概念が出てきてもifやwhenにコードを増殖しないでいい。つまり影響範囲を小さくソースコードに変更を加えることができる。
ドメインのルールを一箇所に集約できる
凝集度が高く、可読性が高い
型安全性が高まる
状態やルールが型として表現されているため、コンパイル時に不正なコードとして気づきやすい。