我正在开发一个购物车应用程序,它将输出购物车的价格。
我有3个关于此购物车,购买,产品的课程
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;
}
}
如上所示,单个产品可以提供报价,购物车也可以提供报价。
最初我想到要提供工厂。
OfferPrice可以是抽象类,其子级可以是buyonegetoneprice,buytwogetoneprice,50precentoffprice,但是,buyonegetoneprice的输入将是数量和价格,而50precentoffprice的输入仅是价格。
这意味着有两种不同的方法,但是OfferPrice的实现者仅涉及一种实现。
另外购物车上的报价又如何呢?购物车上的优惠可以基于客户的忠诚度积分或50%的折扣或其他价格。
如何以可扩展的方式设计这些针对购物车和单个产品的报价?
最佳答案
从您的示例中,您可能需要不同的报价策略。在我看来,您应该使用接口将所有这三个类松散地耦合在一起。创建OfferStrategy和子类,例如基于产品的报价,基于价格的报价等。
这看起来还可以从规则引擎中受益(您可以在不停止应用程序的情况下动态更改整个应用程序的“报价”)
这是我对设计的建议(每个类的接口,封装内部使用规则的不同Offer算法的策略):
* Ixxx代表接口,
IOffer ICart 购物车有产品和报价。
这是这样做的好处/原因:
假设Offer和Offer实现将不断变化,因此需要接口和在运行时进行更改的能力。
购物车价格取决于报价策略
关于java - Java设计模式-如何在产品和购物车上应用报价,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47943385/