gpt4 book ai didi

java - 库存 list -多态设计

转载 作者:太空宇宙 更新时间:2023-11-04 07:49:28 26 4
gpt4 key购买 nike

(我使用的是 Java,因此添加了“Java”标签,以防它影响任何答案,但有些人可能会认为该标签是不必要的。)

考虑以下因素:

我有一个阳台/阳台可以进行图形规划。作为最终计划的一部分,我需要列出 build 阳台所需的所有 Material 。为了简化计算过程,我将阳台分成不同的部分:

甲板上 - 涉及塑料围栏组件和固定件(即螺钉、 bolt )
甲板下 - 涉及木质副框架和更多固定装置。

...还有其他我不会深入讨论的内容。


出于争论:由于我们提供不同的围栏设计,因此有 100 种不同的库存商品可供选择。每个商品都有自己的类别,包括尺寸、颜色、数量及其 ID 引用等信息。

我想做的是创建每个部分所需的修复列表,并将它们全部添加到一个最终列表中,没有任何重复。
最终的想法是在已处理的计划旁边显示项目名称和数量。


例如:

第 1 部分要求:
- 25 个螺丝 A
- 15 x 螺丝 B
- 5 个螺丝 C

第 2 部分要求:
- 25 个螺丝 A
- 15 x 螺丝 B
- 5 个螺丝 F

第 3 节要求:
- 45 x 螺丝 B
- 50 x 螺丝 C
- 24 x 螺丝 G

总列表
第 1 部分 + 第 2 部分 + 第 3 部分 = {完整的 Material list }

<小时/>

我尝试过/考虑过的:

我上面提到的所有螺钉都有自己的类,并扩展了父类(super class)“紧固件”。上面提到的每个部分都有一个变量:

ArrayList<Fasteners>

因此,当我计算时,我可以将螺钉添加到该变量中。一旦每个部分计算出需要多少个紧固件,我就会将它们添加到一起。

我考虑过在“Fasteners”父类(super class)中创建一个“add(Fishings)”方法,将任何重复的项目添加在一起。但因为有 100 个项目,我认为编码不会非常有效,并且怀疑有更好的方法来利用我在这里设置的多态性。任何在线引用或提示都会有帮助并且非常感激。

最佳答案

这里有一个建议:

创建一个名为 FastenerType 的枚举,然后使用 EnumMap<FastenerType, AtomicInteger>固定您的紧固件。我们称之为包。

然后做类似的事情

public class FastenerBag {

private Map<FastenerType, AtomicInteger> fasteners = new EnumMap<FastenerType, AtomicInteger>(FastenerType.map);

FastenerBag(){
// init your ints to zero
}

public void addFastenersFor(VerandaPart part){
for (FastenerType type : FastenerType.values()){
fasteners.get(type).addAndGet(part.getRequiredFasteners().get(type));
}
}

}

不必太担心性能。首先让它工作。然后使其可读(重构),然后优化。

关于java - 库存 list -多态设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14730192/

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