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でも分割しておきます。