【问题标题】:Objects Oriented Design for Two Classes with the same Fields in JavaJava中两个具有相同字段的类的面向对象设计
【发布时间】:2014-04-30 01:19:10
【问题描述】:

我有两个类,分别称为 ShoppingCart 和 StoreInventory。这些用于涉及零售业务领域的便利店系统。

它们都包含一个列表产品字段。但是,只有 ShoppingCart 应该能够计算列表中所有产品的总成本。此外,这两个可疑的对象完全不同,但具有相同的字段(附录:和方法,除了 ShoppingCart 可以计算其总值)。

通过接口和继承可以解决这个问题的最佳方法是什么?

【问题讨论】:

  • 大概只有库存中的物品可以添加到购物车中。为什么怀疑它们是具有复制字段的不同对象?
  • 不要使用继承。使用接口用于操作,或者它们应该统一

标签: java object code-analysis business-logic


【解决方案1】:

这是我对这个问题的理解,如果我错了,请纠正我。

您有一个库存类,并且可以在商店中出售的每件商品都保存为该类的一个实例。你还有一个购物车类。购物车包含它所包含的产品列表。购物车还可以计算所有商品的总价。

如果这是真的,我有一些建议。

  • 我建议创建另一个类“item”来在商店中存储单个项目。这允许商店库存成为项目列表。商品可以包含价格字段,以及有关库存和供应商的潜在信息。
  • 我建议使用一个驱动程序类来处理购物车的创建/修改以及商店库存的修改,但是您决定处理它。为客户(购物车)配备一名司机,为业主/员工(库存/物品)配备一名司机甚至可能是有意义的。

如果您确实想使用继承,您可以编写一个项目列表类,该类将创建一个项目列表,并包含添加、删除、修改等方法。然后您可以将购物车和存储库存编写为它的子类,每个扩展项目列表,但也有自己的方法,例如,购物车中的价格总和。如果您想为购物者和员工提供单独的商品类别,这将成为一个坏主意。例如,购物者的一项包括购买的数量和价格,而员工的一项包括库存数量和供应商信息以及价格。在这种情况下,您将需要多个不同的项目类,并且继承将不再起作用。

【讨论】:

  • 我会接受这个答案,因为你提出了很多有效的观点。但是,你不认为以完全不同的方式对这两者进行编码会违反 OOP 的“不要重复自己”的规则吗?
  • 好点,我重新考虑了一下这个想法并编辑了原始答案。
猜你喜欢
  • 2017-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 2016-01-19
  • 2017-08-20
相关资源
最近更新 更多