首页 > 解决方案 > 设计库存管理中的转移模式

问题描述

我正在为库存管理软件设计类图。基本上它有 3 个概念:ItemBox和类关联Distribution,如下所示。

在此处输入图像描述

一个项目可以放置在多个不同数量的盒子中。一个盒子可以有很多物品,当然,数量不同。只有当一个盒子确实有一个数量记录为 Distribution 类中的 DistributedQuantity 的项目时,它们之间的关系才会形成

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

将特定物品从第一个盒子转移到第二个盒子时可能会发生某些情况:

最初,我尝试将 Transfer 与 Distribution 联系起来,因为这个概念同时包含 Item 和 Box 的数据。但它只适用于第一个和第二个盒子都转移了物品的情况。

我不知道这是否有标准(交易)模式。

标签: javaflutteruml

解决方案


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

1.复制Transfer中的所有信息

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

2.不要删除对象,而是将其标记为死亡

在这种方法中,您不会删除任何对象,只是在它们不应该再存在时将它们标记为已死。您可以通过添加一个布尔属性“dead”(或“deleted”)来做到这一点。现在,您可以将 Transfer 与 Item 和 2 Boxes 相关联。让 Transfer 具有属性“transferredQuantity”。这种方法的缺点是,当您需要使用额外的类和关联来扩展模型时,您经常需要意识到模型中有死对象,这可能会影响多重性。


推荐阅读