我有一个场景,我正在为零售商设计一个系统。这不是一个合适的实时应用程序,而只是一个检查我的 OO 设计技能是否正确以及我的思维是否正确的场景。我还在这儿学习。我在 c# 中这样做。
场景是这样的:
一家销售固定产品的零售商想要设计一个系统,该系统将从他的各种固定数量的供应商中选择最优惠的价格并向该供应商下订单。为简单起见,我将固定产品缩减为同一公司的一种产品,即 XYZ 笔。当被询问时,每个供应商都将提供 XYZ 笔的报价,并且零售商系统从各个卖家中选择最优惠的价格并从该卖家下订单。
方法一:
- 为供应商创建一个抽象类并为每个供应商创建一个实现。
- 每个供应商实现都有一个 PlaceOrder() 方法和一个成本属性。
- DataLayer 为每个供应商实现设置成本属性。
- 创建一个 CheckBestRetailer 类,该类评估每个实现以获得最佳价格并在适当的实现上下订单。
方法二:
- 使用 Cost 属性和 PlaceOrder() 方法创建类型供应商列表。
- 对于每个供应商,数据层将新的供应商类型添加到列表中,并设置从数据库中获取的成本详细信息。
- CheckBestRetailer 类循环遍历该列表并评估每个对象以获得最佳价格,并在适当的实现上下订单。
在上述两个中,我觉得方法 1 更接近 OOP,但前提是我有固定数量的供应商。如果供应商的数量可以根据从数据库中检索到的数据而改变,那么方法 2 会更好。
你怎么看?
我可能没有最好的方案来测试我的 OOAD。希望有一些我也可以使用的示例场景……如果可能的话,带有设计提示。
谢谢你的时间。