我正在开发一个购物车应用程序,它将输出购物车的价格。
我有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/

10-10 14:28