开发者社区> 问答> 正文

我应该为库存系统使用静态列表吗?

已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。

8天前关闭。

我正在开发MilkTea库存和订购系统,其中已经为MilkTea对象创建了MilkTea类。现在,我计划将所有MilkTea对象添加到ArrayList中。我的系统应该能够添加,编辑,显示和删除Milktea以及订购MilkTeas。现在,我的问题是确定应该实施的程序设计。我应该为我的MilkTea(静态)制作数组列表吗?

  • 我的阵列列表可以随时更改。
  • 我的奶茶阵列列表也可以在与订购有关的其他课程中访问。
  • 我的数组列表不是一成不变的。

到目前为止,这是我的类,用于添加,编辑,删除和显示MilkTeas:

package inventory;

import java.util.ArrayList;

public class MilkTeaList {

    public ArrayList<MilkTea> list = new ArrayList();

    public void addMilkTea(String flavorName,String[] sizes, double[] prices, int stock) {
        list.add(new MilkTea(flavorName, sizes, prices, stock));
    }

    public ArrayList<MilkTea> getList() {
        return list;
    }
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-24 17:36:26 525 0
1 条回答
写回答
取消 提交回答
  • 如果您使用的是数据库,建议您在DAO类(称为当前类MilkTeaListDao)中实现常规的CRUD方法,并依赖于数据库的事务完整性。

    如果不是,请调用您的类MilkTeaListHandler或MilkTeaListController,添加一个getInstance()方法(并通过使用私有构造函数确保只有一个类对象),然后使用操作列表的方法。该名单应该不会是静态的,方法应该有一个全球同步锁来保证事务的完整性。并且该getList()方法应返回列表的副本,而不是列表本身。

    我注意到您对这个问题有一些矛盾的答案,所以让我为我的建议提供一些论点和解释:

    • 在项目开始时,使用可以在任何地方操作的静态列表是很方便的,但是在项目的整个生命周期中,它最终都会变得令人头疼。例如,假设代码的一部分将列表存储到磁盘(使用for循环),而代码的另一部分(同时)添加,更新和删除列表中的项目。然后,您不知道磁盘上存储了什么(先存储或更新的内容),并且在某个阶段(也许是几年后)将获得nullPointerExceptions,因为保存功能假定列表中有记录,别人刚移走。
    • 当MilkTea对象更改时,您将需要在整个代码中进行更新。例如,记住在所有位置添加expireDate。如果所有操作该列表的方法都集中在一个位置,则更改它们会更容易(并且更容易看到更改产生了什么影响,因为您将在其余代码中遇到编译错误)。
    • 如果扩展了添加/删除/更新,则MilkTea周围的其他逻辑很可能也会扩展。当逻辑发生变化时,您可能会在整个项目中发现重复的代码,并且在多个位置进行更新将很繁琐且容易出错。逻辑示例是错误处理。可以说,当系统通过从文件中读取行来更新库存时,如果价格设置为零,将引发异常。好。但是对于用户可以从Web界面手动更新库存信息的功能,您忘记添加该限制。不好。如果操纵方法集中在一个地方,则必须只对一次price == zero检查一次,然后您就会知道它将永远存在。

    回答来源:Stack Overflow

    2020-03-24 17:36:58
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
动态、高效,蚂蚁动态卡片的内核逻辑 立即下载
《用管控策略设定多账号组织全局访问边界》 立即下载
“静态调用链路发现”应用场景分析及实践探索 立即下载