对象层次设计方法
Posted
技术标签:
【中文标题】对象层次设计方法【英文标题】:Object hierarchy design approaches 【发布时间】:2012-01-26 16:56:10 【问题描述】:我正在构建一个能够将数据输出为 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)。
你认为最好的方法是什么?
【问题讨论】:
【参考方案1】:您对选项 2) 的看法是正确的(基本上是 Adaptor Pattern)。
您的域对象应该以某种方式独立于它的使用。使用映射(或适配器)类将模型转换为视图是确保封装和职责分离的最佳方式。这样,如果您想以另一种第三种格式(例如 html?)公开模型,您只需要创建相关的适配器,而无需更改任何现有代码。
【讨论】:
谢谢。我将使用选项 2 并合并适配器模式。以上是关于对象层次设计方法的主要内容,如果未能解决你的问题,请参考以下文章