ホテルの部屋の予約を扱う非常にシンプルなアプリケーションを書いています。ある段階で問題が発生しました。
注文のキューを処理しています。注文ごとに、受付係の1人は、クライアントの戦略に従って部屋(1つまたはまったくなし)を選択する必要があります。それが私がJavaを使うことにした理由Optional
です。問題は、希望する日に空き部屋がない場合は注文をキャンセルする必要があることですが、利用可能な部屋があり、それらのどれもが受付の戦略に適合しない場合は、注文をキューに戻す必要があります。
部屋を選択することは間違いなく受付の義務である必要があります。その問題にクリーンな方法で対処するための最良の方法は何だと思いますか?Optional
日付に部屋がない場合、空を返す代わりに例外をスローする必要がありますか?残念ながら、例外は通常、コードフローを制御するための適切なソリューションではありません。
コードフラグメント:
Optional<Room> selectedRoom = receptionist.chooseRoom(rooms,
order.getQuestionnaire());
boolean decision = selectedRoom
.map(room -> receptionist.askClient(order.getClient(),
room,
order.getQuestionnaire()))
.orElse(false);
if (shouldProcessAgain(order, selectedRoom.isPresent(), decision)) {
orders.add(order);
}