Рассмотрим, в качестве примера, область GPS и географических (ГИС) объектов.
Мы моделировали бы значимые географические объекты (точки, пути, регионы) как классы на любом желаемом языке программирования, и эти классы были бы концептуальным представлением этих объектов без реализации.
С другой стороны, существует множество форматов файлов, которые сохраняют эти функции с более или менее одинаковым значением. В домене GPS наиболее распространенными форматами файлов являются GPX, KML, ShapeFile, WellKnownText и т. д.
Предположим, что я хочу создать класс GpsFeatureCollection
, который будет содержать свойство Points
, свойство Paths
и так далее. Кроме того, я бы реализовал такие классы, как GpsReader
, KmlReader
, ShapeFileReader
(и соответствующие им Writer
) и так далее.
ВОПРОС В ТОМ:
Что является лучшей практикой в OOAD:
- У вас есть
GpsFeatureCollection
для создания экземпляра классаFileFormat(Reader/Writer)
? - Есть
GpsFeatureCollection
для реализацииRead/WriteFromFormat
методов вместо классов? - Пусть каждая программа чтения форматов файлов создаст экземпляр пустого
GpsFeatureCollection
, заполнит его данными, прочитанными из файла, а затем передаст заполненный объект в качестве возвращаемого значения? - У вас есть класс-посредник, чтобы избежать зависимости между
FileFormatClass
иObjectModelClass
? - Ни один из вышеперечисленных?
- "Смотря как..."
Мне действительно интересно делать «правильные вещи». В ближайших планах использовать Python, но, скорее всего, это будет иметь значение и для других языков. В настоящее время это вызывает некоторый «аналитический паралич» в моем любимом проекте...