【发布时间】:2013-07-12 01:22:53
【问题描述】:
让我们以 GPS 和地理 (GIS) 实体领域为例。
我们会将有意义的地理实体(点、路径、区域)建模为任何所需编程语言中的类,这些类将是这些实体的概念性、“无实现”表示。
另一方面,有很多文件格式可以保存这些功能,它们或多或少具有相同的含义。在 GPS 领域,最常见的文件格式有 GPX、KML、ShapeFile、WellKnownText 等。
然后,假设我想创建一个 GpsFeatureCollection 类,该类将包含 Points 属性、Paths 属性等。另外,我会实现GpsReader、KmlReader、ShapeFileReader(以及它们各自的Writers)等类。
问题是:
OOAD 的最佳实践是:
- 有一个
GpsFeatureCollection来实例化一个FileFormat(Reader/Writer)类吗? - 有一个
GpsFeatureCollection来实现Read/WriteFromFormat方法而不是类? - 让每个文件格式读取器实例化一个空的
GpsFeatureCollection,用从文件读取的数据填充它,然后将填充的对象作为返回值传递? - 有一个中介类来避免
FileFormatClass和ObjectModelClass之间的任何依赖关系? - 以上都不是?
- “嗯,这取决于...”
我真的对做“正确的事”很感兴趣。我的近期计划是使用 Python,但很可能这对其他语言也很重要。这导致我的宠物项目目前出现一些“分析瘫痪”......
【问题讨论】:
标签: file-io language-agnostic dependencies ooad