代码之家  ›  专栏  ›  技术社区  ›  Tommy Jakobsen

关于分类的建模问题。分型还是不分型?

  •  0
  • Tommy Jakobsen  · 技术社区  · 14 年前


    我有个产品。产品可以是不同的类型,例如ProductType 1、ProductType 2和ProductType 3。所有产品都有零件号和名称。不同之处在于它们的价格计算方式。

    • 第一类产品的价格取决于产品的数量。如果我有5种产品,价格是x美元。如果我有20种产品,价格是$y,以此类推。

    在我看来,每个价格结构都需要有一个专用的表/类。一个产品将有一个参考其价格结构,这取决于产品的类型。您是创建一个产品类型表并在产品类上有一个名为type的属性,还是使用泛化,这样产品1/2/3就是产品的一个子类型?

    你能给我一些关于如何用最好的方式来建模的建议吗?如果我选择在Product类上有Type属性的方法,我想我的代码中会有很多If-else语句。如果我选择对它们进行子类化,那么每个类都可以负责计算正确的价格,或者要求它做什么。

    2 回复  |  直到 14 年前
        1
  •  1
  •   mikemanne    14 年前

    这听起来像是一个完美的例子,当使用 Strategy pattern

    我将每个产品定义为有一个“定价策略”——在您的情况下,这将是“体积搜索”、“按重量”或“简单”。你可以用一个 Factory 根据产品的策略提供正确的PriceCalculator对象,PriceCalculator将相应地计算产品的价格。

        2
  •  1
  •   Fadrian Sudaman    14 年前

    您的订单将包含一个基本产品参考列表,为了得到总的价格,您将询问每个产品的价格,并使用迭代器进行累加。