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

标签 java file oop

我一直在努力想出为项目设计文件管理器的最佳方法。我需要处理许多文件实现,并且我有一个由 2 个对象组成的文件类:数据和描述符。

Here's my class diagram so far.

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

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

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

最佳答案

为什么你不应该像你那样做

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

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

我强烈建议您不要保持分离,因为它在当前形式下没有任何好处。说明只是个哑巴

如何做得更好

更好的解决方案是将 Description 合并到您的 Data 类中。这样每个类都可以轻松访问它需要的数据。

如何强制你的类分离

如果您无论如何都想强制分离DescriptionData,您可以使用以下解决方案之一:

  • 添加关联形式DataDescription
  • 使用Mediator

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

关于java - 设计一个简单的文件管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778285/

相关文章:

java - 如何按日期对查询结果进行排序(Jpa、Java Collections)

regex - 查找不带指定字符的文件名

c - C 中的输入文件双指针

javascript - 如何将对象方法传递给javascript中的数组方法

java - 从外部类处理 JFrame 组件的最佳方法

java - 如何从分隔字符串中获取值?

java - 将所选项目从上下文菜单发送到另一个 Activity

java - Camel 读取文件内容

java - 当 Activity 名称存储在列表中时访问 Activity

c++ - 如何在导入另一个库的库中修复 "invalid use of non-static member function"