package openClosedPrinciples.core; import java.util.ArrayList; import java.util.Comparator; import java.util.List; public abstract class Service{ protected List payingItemList = new ArrayList<>(); /// Constructeurs public Service(List payingItemList) { this.payingItemList = payingItemList; } /// Accesseur protected List getpayingItemList(){ return payingItemList; } /// Méthodes // Trier la liste d'item par prix public List sortedByPrice() { payingItemList.sort(Comparator.comparing(PayingItem::getPrice)); return payingItemList; } // Récupérer l'item le moins cher public T lessExpensiveItem(){ sortedByPrice(); return payingItemList.get(0); } // Ajouter un item à la liste public void add(T payingItem) { payingItemList.add(payingItem); } // Trouver public abstract T find(Description description) throws AucunItemCorrespondant; }