Repositoryの実装では下記のようなシグネチャーを使っていました。
interface EmployeeRepository {
fun resolveBy(employeeId:UUID):Employee
fun add(employee:Employee)
fun replace(employee:Employee)
fun remove(employeeId:UUID)
}
addとreplaceが存在していますが、saveメソッドに統一するのはどうでしょうか。
interface EmployeeRepository {
fun resolveBy(employeeId:UUID):Employee
fun save(employee:Employee)
fun remove(employeeId:UUID)
}
この例では問題ないように見えますが、このシグネチャーにしてしまうと変更が難しくなってしまう可能性があります。
これを避けるため、addとreplaceを分けました。
ユースケースでも新規登録と更新は別であることが想定されるため、Repositoryでも分割しておきます。