package com.bookshop.solid.ocp;
import java.math.BigDecimal;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
/**
* Closed for modification: this class quotes whatever rates it is given and has
* no idea which shipping options exist. New options never require editing it.
*/
public class ShippingQuotes {
private final List<ShippingRate> rates;
public ShippingQuotes(List<ShippingRate> rates) {
this.rates = List.copyOf(rates);
}
public Map<String, BigDecimal> quoteAll(BigDecimal orderTotal) {
Map<String, BigDecimal> quotes = new LinkedHashMap<>();
for (ShippingRate rate : rates) {
quotes.put(rate.name(), rate.costFor(orderTotal));
}
return quotes;
}
}