gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 00:55:48 25 4
gpt4 key购买 nike

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

enter image description here

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

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

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

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

  • 在第二个盒子中:如果该元素与盒子之间已经存在链接(即该盒子已经有该元素),则分配的数量将被修改。否则,会形成一个新链接。

最初,我尝试将Transfer链接到Distribution,因为这个概念同时包含了Item和Box的数据。但它仅在第一个和第二个盒子都转移了元素的情况下才有效。

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

最佳答案

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

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

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

<强>2。不要删除对象,而是将它们标记为死亡

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

关于java - 设计库存管理中的转移模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57819853/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com