首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OO设计问题

OO设计问题
EN

Stack Overflow用户
提问于 2010-02-15 19:52:04
回答 8查看 476关注 0票数 3

我有两种类型的产品-折扣(10%折扣)和NonDiscounted (0%),每一种都可以是LocalProduct / ExportableProduct,出口一种要缴纳15%的销售税。

对此场景进行建模的最佳方式是什么?我是软件设计的新手,我的想法非常有限1.有4种不同的产品子类型2.使用策略模式和4种不同的策略。

有人能建议我如何使用上述选项或其他选项有效地建模吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-02-15 20:34:22

类区分行为集。因此,让我们看看你们在这些方面的划分:

  • 虽然可以认为折扣/非折扣是行为的一种变化,但将其简化为单一行为是微不足道的:所有产品都有折扣,但非折扣产品的折扣金额恰好是0%。这只是您的产品(discount_amount)的一个属性,而不是一个单独的class.
  • Local/exportable可能有也可能没有不同的行为。如果唯一的区别是产品是否允许在国际上运输,那么一个简单的布尔标志应该足以处理这种区别。另一方面,如果可导出产品需要本地产品不支持的行为(例如,记录客户要求和程序),则适当的做法是使ExportableProduct成为LocalProduct的子类(如果可导出产品行为是本地产品行为的超集),或者使抽象产品类具有LocalProduct和ExportableProduct子类(如果本地产品也具有可导出产品不支持的行为)。
票数 0
EN

Stack Overflow用户

发布于 2010-02-15 20:04:22

为了简单起见,问问你自己,折扣是否真的需要是一个子类型,或者它是否可以是产品的一个属性,其中"NonDiscounted“的折扣为零。

票数 1
EN

Stack Overflow用户

发布于 2010-02-15 20:05:27

我会这样做:

有一个名为" product“的类,它具有产品的基本属性,如名称、描述、类型等。

基类"Product“可以有一个名为"DiscountRate”的属性。对于非折扣,它可以是0;对于折扣,它可以是任何值。这将有助于简化计算,因为将始终应用相同的公式,只是在一种情况下折扣为0。

然后你可以有两个类"ExportableProduct“和"LocalProduct",它们都继承自”产品“类。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2265682

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档