我应该使这些方法不是静态的

时间:2012-12-31 07:02:20

标签: oop design-patterns static

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

最初我有Book,Customer,Administrator的课程(有客户,管理员扩展抽象用户类) 然后我创建了列表类BookCollection,CustomerCollection,其中包含ArrayList中上述类的实例列表(暂时不处理数据库)并对相应的ArrayList执行添加,删除,排序方法(只有一个内联问题:将如果我在开始处理数据库时用数据库操作替换ArrayList相关代码,每个xyzCollection处理数据库中的xyzTable ,那么这是一个很好的设计实践。

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

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

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

在代码设计方面会有什么好处?或者我已经明确错误地将它们全部静止了?

2 个答案:

答案 0 :(得分:2)

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

因此建议您使用普通类而不是静态。您可以使用静态来管理实用程序,例如连接到数据库,但不能像占位符一样使用书籍/客户列表。

答案 1 :(得分:0)

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

相关问题