2

我只是通过构建图书馆管理系统的虚拟项目来练习 Java OOP 概念。

最初我有 Book、Customer、Administrator 的类(与 Customer、Administrator 扩展抽象用户类)然后我创建了列表类 BookCollection、CustomerCollection,它们在 ArrayList 中保存上述类的实例列表(有一段时间不处理数据库)和在相应的 ArrayList 上执行添加、删除、排序方法(只有一个内联问题:如果我在开始处理数据库时将 ArrayList 相关代码替换为数据库操作,并且每个 xyzCollection 都处理数据库中的 xyzTable,这将是一个好的设计实践

主要问题:由于我之前认为我只需要维护跨应用程序的书籍、客户列表,因此我将 ArrayLists 设为静态。另外,我写了足够多的静态方法:addXyz、deleteXyz、searchXyz、sortXyz 方法但是现在我意识到,为了搜索客户或书籍,我可能(或者应该)返回与名称匹配的列表,这意味着我必须返回另一个 ArrayList,它应该是 xyzCollection 的一个实例,但是我不能在这些 xyzCollection 中使用 ArrayList,因为它在所有实例之间是静态共享的。

最初似乎我需要共享 ArrayList,但现在我怀疑我最初的决定。什么应该是正确的?:

  • 我是否应该使 ArrayList 和相应的方法非静态并在调用时进行任何相应的代码更改
  • 或者我应该返回 ArrayList 而不是 XyzCollection

在代码设计方面什么会更好?或者我在使它们全部静止时犯了明确的错误?

4

2 回答 2

2

我假设您在从数据库中获取数据后正在创建收藏书籍/客户。正如您所说,它是一个图书馆管理系统,这意味着多个用户可以同时使用它。并且每个请求都将独立于其他请求(如典型的分布式系统)。

所以建议你使用普通类而不是 static。您可以使用静态来管理实用程序,例如与数据库的连接,但不能用作书籍/客户列表等占位符。

于 2012-12-31T07:15:59.423 回答
0

在我的想法中,使用数据库会很容易,然后使用数组列表的概念。与使用数组一样,您必须使其共享,以便可以访问值。因为我不知道你制作它的概念设计,所以认为它只是一种意见。

于 2012-12-31T07:13:07.120 回答