对象层次设计方法

时间:2012-01-26 16:56:10

标签: inheritance object hierarchy

我正在构建一个应用程序,它能够将数据输出为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,paragraph)。如果我使用选项2,我正在考虑创建一个类,如RSSMapper,它将获取一个对象并仅将必要的属性映射到RSS格式 - 例如,RSSMapper.mapArticle(文章文章)。

您认为最好的前进方式是什么?

1 个答案:

答案 0 :(得分:1)

你选择2)是正确的(基本上是Adaptor Pattern)。

您的域对象应该以某种方式独立于其使用。使用映射(或适配器)类将模型转换为View是确保封装和分离责任的最佳方法。这样,如果您想以另一种第三种格式(例如HTML?)公开模型,您只需创建相关的适配器,而无需更改任何现有代码。