このタイプのパターン (この例はこちらにあります) は Scala でよく見られます。
class UserActor extends Actor {
def receive = {
case GetUser(id) =>
// load the user, reply with None or Some(user)
val user: Option[User] = ...
sender ! user
case FindAll() =>
// find all users
val users: List[User] = ...
sender ! users
case Save(user) =>
// persist the user
sender ! Right(user)
}
}
したがって、取得する呼び出しに応じて、Option[User]、List[User]、Right[User]. このアプローチは大丈夫です!これが最適かどうか興味を持って尋ねているだけですか?たとえば (これは悪いことかもしれません): 常に List[User] を返すことで一般化を試みると、API が良くなったり悪くなったりしますか? そのため、ユーザーが見つからない場合、または保存に失敗した場合、リストは単に空になります。私はただ興味があります....上記の「パターン」を改善する方法について他に何か提案はありますか?
私は、このスタイルの API の完璧なパターンを特定しようとしています。エンティティを 1 つ取得する場合もあれば、エンティティを取得しない場合もあれば、エンティティのリストを取得する場合もあります。これを行うための「最善の」方法はありますか、それとも誰もが自分の役割を果たしますか?