让我们以 GPS 和地理 (GIS) 实体领域为例。
我们将有意义的地理实体(点、路径、区域)建模为任何所需编程语言中的类,这些类将是这些实体的概念性、“无实现”表示。
另一方面,有很多文件格式可以保存这些功能,它们或多或少具有相同的含义。在 GPS 领域中,最常见的文件格式是 GPX、KML、ShapeFile、WellKnownText 等。
那么,假设我想创建一个GpsFeatureCollection
包含Points
属性、属性等的类Paths
。另外,我会实现像GpsReader
, KmlReader
, ShapeFileReader
(以及它们各自Writer
的 s)等类。
问题是:
这是 OOAD 中的最佳实践:
- 有一个
GpsFeatureCollection
实例化一个FileFormat(Reader/Writer)
类? - 有一个
GpsFeatureCollection
实现Read/WriteFromFormat
方法而不是类? - 让每个文件格式阅读器实例化一个空
GpsFeatureCollection
的,用从文件中读取的数据填充它,然后将填充的对象作为返回值传递? - 有一个中介类来避免和之间的任何
FileFormatClass
依赖ObjectModelClass
? - 以上都不是?
- “这得看情况...”
我真的对做“正确的事”很感兴趣。我的近期计划是使用 Python,但很可能这对其他语言也很重要。这在我目前的宠物项目中造成了一些“分析瘫痪”......