我只是通过构建图书馆管理系统的虚拟项目来练习 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
在代码设计方面什么会更好?或者我在使它们全部静止时犯了明确的错误?