Cha*_*aru 7 oop design-patterns
这是我在面试时被问到的问题,我得到的反馈是我缺乏 OOD 技能。所以我想知道我建议的设计有什么问题。
问题陈述: 设计一个系统,帮助计算购物车中商品的总成本。您将获得购物车中带有折扣的商品列表,如下例所示。该列表将包含商品或折扣,并且顺序很重要:
样品购物车: 10 美元书籍 xyz,所有商品 10% 折扣,20 美元文具,下一件商品 20% 折扣,100 美元衬衫,第 5 件类型书籍折扣 15 美元。
折扣类型: 所有商品 10% 折扣 下一件商品 20% 折扣 第 5 件类型图书 15 美元折扣(更多类型的折扣可以稍后添加到系统中)
我给出的解决方案:
这是 TotalCost() 算法:
public decimal TotalCost(List<CartItem> cartItems)
{
var totalCost =0.0;
var items = cartItems.where(c => c.Item!=null).Select(c.Item);
foreach(var cartItem in cartItems)
{
if(cartItem.Coupon != Null)
{
cartItem.CouponType.CalculateDiscounts(items);
}
}
foreach(var item in items)
{
totalCost += item.DiscountedCost;
}
return totalCost;
}
Run Code Online (Sandbox Code Playgroud)
该列表将包含商品或折扣,并且顺序很重要
从您的设计中尚不清楚您是如何解决这部分问题的。我想知道问题是否暗示多态性与顺序处理相结合?像Composite
或Strategy
设计模式之类的东西可能就是他们正在寻找的东西?