S2AbstractService エンティティに対する操作を格納するクラスをサービスと呼びます。 ビジネスロジックは、エンティティかサービスに定義します。 ものとして扱うことが自然なものはエンティティに割り当て、 ものとして扱うことが不自然なものはサービスに割り当てます。 例えば、データアクセスロジックは機能中心なので、サービスに割り当てます。 計算して求められるような導出プロパティは、エンティティに持たせます。 サービスは基本的にエンティティと一対一で割り当てるのを推奨します。 ルールが明快なので、どのロジックがどこにあるのかが分かりやすいためです。 ロジックが探しやすければ、似たようなロジックを知らず(探せず)に 実装してしまう危険も少なくなります。 例えば、Employeeに対するサービスは、次のようになります。