我一直在努力想出一个为项目设计文件管理器的最佳方法。我需要使用许多文件实现,我有一个由2个对象组成的File类:Data和Descriptor。
如您所见,我有许多不同的Data类实现,每个文件组织一个。所有实现都使用记录来组织其信息,但是每种文件(用户,事务等)的字段必须作为元数据存储在它们各自的描述符文件中。所以基本上我的问题是尝试访问和更新每个文件的描述符。
例如,在尝试从Stacked类中的Users文件中搜索()时,我需要用户描述符文件中的字段(用户名,姓名,姓名等),但我不能来为它设计一个漂亮的设计。我能想到的唯一方法是将描述符引用传递给每个方法(搜索,写入等等),但我觉得我的解决方案是糟糕的设计。
请注意,我仍然需要为不同的文件添加更多文件组织,所以我想提前计划并有一个很好的文件管理器来尽可能地处理所有请求,但是目前这就是我来的起来。
答案 0 :(得分:1)
良好的面向对象设计的一个主要目标是使方法与他们使用的数据保持接近。这会导致高cohesion 和低coupling 。
你反过来又想做相反的事情。您希望数据存储在与使用这些数据的方法不同的类中。这会导致代码气味被称为Feature Envy而您的Description
只是一个愚蠢的data class。
我强烈反对你保持分离,因为它的当前形式没有任何好处。描述只是一个愚蠢的
更好的解决方案是将Description
合并到您的Data
课程中。这样每个班级都可以轻松访问所需的数据。
如果您想强制执行Description
和Data
的分离,您可以使用以下解决方案之一:
Data
添加到Description
或PS:你的作品指向错误的方向。目前,您的数据对象包含文件,而描述符对象包含其他文件。