Java 库存管理中的转移模式设计

Java 库存管理中的转移模式设计,java,flutter,uml,Java,Flutter,Uml,我正在为库存管理软件设计一个类图。基本上它有三个概念:项目、框和类关联分布,如下所示 一件物品可以放在不同数量的盒子里。当然,一个盒子可以有许多不同数量的物品。它们之间的关系仅在箱子中有一个数量记录为distributedQuantity的物品时才会形成 现在我正在努力设计一个类来记录从一个盒子到另一个盒子的传输项目。我们称之为转移概念,包括执行日期和转移数量 将特定项目从第一个方框转移到第二个方框时,可能会发生以下情况: 在第一个框中:如果转移数量等于框中数量,则它们之间的链接为删除。否则

我正在为库存管理软件设计一个类图。基本上它有三个概念:项目和类关联分布,如下所示

一件物品可以放在不同数量的盒子里。当然,一个盒子可以有许多不同数量的物品。它们之间的关系仅在箱子中有一个数量记录为distributedQuantity的物品时才会形成

现在我正在努力设计一个类来记录从一个盒子到另一个盒子的传输项目。我们称之为转移概念,包括执行日期和转移数量

将特定项目从第一个方框转移到第二个方框时,可能会发生以下情况:

  • 在第一个框中:如果转移数量等于框中数量,则它们之间的链接为删除。否则,仅修改配送类中的配送数量

  • 在第二个框中:如果此项目和框之间已经有链接(这意味着此框已经有此项目),则将修改分发数量。否则,将形成一个新的链接

最初,我试图将传输链接到分发,因为这个概念同时包含项目和框的数据。但它只在第一个和第二个箱子都转移了物品的情况下起作用


我不知道这是否有一个标准(事务)模式。

传输的实例用于记录
分发的实例发生的历史。有两种方法可以对此进行建模

1。复制传输中的所有信息

不要将转账与任何可以删除的内容相关联,因为如果它被删除,则会丢失信息。我想Item、Box和Distribution的实例都可以删除。复制传输属性中的所有信息。这意味着Transfer在其属性中存储了有关项目、第一个框、第二个框和transferredQuantity的所有信息。类传输没有任何关联

2。不要删除对象,但要将其标记为死对象


在这种方法中,您不会删除任何对象,您只需将它们标记为已死亡,而它们本不应该再存在。可以通过添加布尔属性'dead'(或'deleted')来实现这一点。现在,您可以将转账与项目和两个方框关联。让传输具有属性“transferredQuantity”。这种方法的缺点是,当您需要使用额外的类和关联来扩展模型时,您需要不断地意识到您的模型中有死对象,这可能会影响多样性。

在该模型中,
库存在哪里?
?我想我将采用第二种方法,因为我忘记了提到的是,在这段时间内,项目尚未删除。感谢您提出1件物品和2个箱子的转移关系。在我的情况下也可以。