设计一个简单的文件管理器

时间:2014-09-11 02:48:33

标签: java file oop

我一直在努力想出一个为项目设计文件管理器的最佳方法。我需要使用许多文件实现,我有一个由2个对象组成的File类:Data和Descriptor。

Here's my class diagram so far.

如您所见,我有许多不同的Data类实现,每个文件组织一个。所有实现都使用记录来组织其信息,但是每种文件(用户,事务等)的字段必须作为元数据存储在它们各自的描述符文件中。所以基本上我的问题是尝试访问和更新每个文件的描述符。

例如,在尝试从Stacked类中的Users文件中搜索()时,我需要用户描述符文件中的字段(用户名,姓名,姓名等),但我不能来为它设计一个漂亮的设计。我能想到的唯一方法是将描述符引用传递给每个方法(搜索,写入等等),但我觉得我的解决方案是糟糕的设计。

请注意,我仍然需要为不同的文件添加更多文件组织,所以我想提前计划并有一个很好的文件管理器来尽可能地处理所有请求,但是目前这就是我来的起来。

1 个答案:

答案 0 :(得分:1)

为什么你不应该这样做

良好的面向对象设计的一个主要目标是使方法与他们使用的数据保持接近。这会导致cohesion coupling

你反过来又想做相反的事情。您希望数据存储在与使用这些数据的方法不同的类中。这会导致代码气味被称为Feature Envy而您的Description只是一个愚蠢的data class

我强烈反对你保持分离,因为它的当前形式没有任何好处。描述只是一个愚蠢的

如何做得更好

更好的解决方案是将Description合并到您的Data课程中。这样每个班级都可以轻松访问所需的数据。

如何强制执行班级分离

如果您想强制执行DescriptionData的分离,您可以使用以下解决方案之一:

  • 将关联表单Data添加到Description
  • 使用Mediator

PS:你的作品指向错误的方向。目前,您的数据对象包含文件,而描述符对象包含其他文件。