Ich arbeite an einer Warenkorb-Anwendung, die Preis des Wagens ausgeben wird. Ich habe 3 Klassen für diesen Wagen, Einkauf, ProduktJava Design Pattern - Wie man Angebote auf Produkt und Einkaufswagen anwenden
public class Product {
private int id;
private String name;
private double price;
Offer offer;
// getter setter
public double getPrice(int quantity) {
return offer.getPrice....
}
}
public class Purchase {
Product product;
int quantity;
// getter setter
public double getPrice() {
return product.getPrice(quantity);
}
}
public class Cart {
List<Purchase> purchase = new ArrayList<Purchase>();
Offer offer;
Integer loyalityPoints;
//getter setter
public double getTotal(){
double total = 0;
for (Purchase purchase : purchase) {
total += purchase.getPrice();
}
double finalPrice = offer.getPrice(total,....;
return finalPrice;
}
}
Wie oben einzelnes Produkt gezeigt Angebot und Wagen auch Angebot haben haben kann.
Anfangs dachte ich an Angebot Fabrik. OfferPrice kann abstrakte Klasse sein & sein Kind könnte buyonegetoneprice, buytwegetapeprice, 50precentoffprice, aber dann Eingang für buyonegetoneprice wird Quanta sein und Preis und Eingabe für 50precentoffprice ist nur der Preis.
Dies bedeutet 2 verschiedene Methoden, aber Implementierer von OfferPrice betrifft nur eine Implementierung.
Auch wie könnte Angebot auf dem Wagen aussehen? Angebot auf dem Warenkorb kann auf Kundenbindungspunkte oder 50 Prozent oder etwas anderes basieren.
Wie können diese Angebote für Einkaufswagen und einzelne Produkte so gestaltet werden, dass sie erweiterbar sind?