我一直在努力想出为项目设计文件管理器的最佳方法。我需要处理许多文件实现,并且我有一个由 2 个对象组成的文件类:数据和描述符。
如您所见,我有许多不同的数据类实现,每个文件组织一个。所有的实现都使用记录来组织它们的信息,但是每种文件(用户、事务等)的字段必须作为元数据存储在它们各自的描述 rune 件中。所以基本上我的问题是尝试访问和更新每个文件的描述符。
例如,当我尝试在 Stacked 类的用户文件中搜索()时,我需要用户描述 rune 件中的字段(用户名、姓名、姓氏等...),但我不能为它设计一个漂亮的设计。我能想到的唯一方法是将描述符引用传递给每个方法(搜索、写入等),但我觉得我的解决方案设计不佳。
请注意,我仍然需要为不同的文件添加更多的文件组织,所以我想提前计划并有一个很好的文件管理器来尽可能最好地处理所有请求,但目前这就是我的目的跟上。
最佳答案
为什么你不应该像你那样做
良好的面向对象设计的一个主要目标是使方法接近它们使用的数据。这导致高cohesion 和 低 coupling .
反过来你想做相反的事情。您希望数据存储在与使用这些数据的方法不同的类中。这会导致代码气味称为 Feature Envy而你的Description
只是一个愚蠢的data class .
我强烈建议您不要保持分离,因为它在当前形式下没有任何好处。说明只是个哑巴
如何做得更好
更好的解决方案是将 Description
合并到您的 Data
类中。这样每个类都可以轻松访问它需要的数据。
如何强制你的类分离
如果您无论如何都想强制分离Description
和Data
,您可以使用以下解决方案之一:
- 添加关联形式
Data
到Description
或 - 使用Mediator
PS:您的作文指向了错误的方向。当前,您的数据对象包含文件,您的描述符对象包含其他文件。
关于java - 设计一个简单的文件管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778285/