Я создаю приложение, которое сможет выводить данные в формате RSS, а также в более подробный пользовательский формат XML. У меня два противоречивых подхода к созданию иерархии объектов.
Вариант 1 - Постройте иерархию в соответствии с требованиями каждого формата (RSS / XML)
FeedItem (RSS properties)
title
description
link
^
|
DetailedFeedItem (Detailed XML properties)
expirationDate
^
|
Article (Detailed XML Article-specific properties)
paragraphs
Хотя это решение работает, создается впечатление, что объекты связаны с их визуальными требованиями (RSS / XML).
Вариант 2 - Построить иерархию на основе более общей абстракции:
Item
title
description
expirationDate
^
|
Article
paragraphs
Этот подход кажется мне более гибким и простым, но тогда, когда я создаю RSS, у меня могут быть свойства, которые не будут заполнены (expirationDate, параграфы). Если я выберу вариант 2, я подумал о создании класса, такого как RSSMapper, который бы брал объект и отображал только необходимые свойства в формат RSS - например, RSSMapper.mapArticle (Article article).
Как вы думаете, что будет лучшим способом продвижения вперед?