* Offer VO is not stored in the Repo, it is stored on the Client Tier instead.
*/
public Offer calculateOffer(AggregateId orderId) {
Reservation reservation = reservationRepository.load(orderId);
DiscountPolicy discountPolicy = discountFactory.create(loadClient());
/*
* Sample pattern: Aggregate generates Value Object using function<br>
* Higher order function is closured by policy
*/