2012-01-26 13 views
0

私は、RSS形式とより詳細なカスタムXML形式にデータを出力することができるアプリケーションを構築しています。私はオブジェクトの階層構造をどのように作成するかという2つの相反するアプローチを持っています。オブジェクト階層設計のアプローチ

オプション1 - オブジェクトは、視覚的な要件(RSS/XMLに結合されているように(RSS/XML)このソリューションが動作しますが

FeedItem (RSS properties) 
    title 
    description 
    link 
^ 
| 

DetailedFeedItem (Detailed XML properties) 
    expirationDate 
^ 
| 

Article (Detailed XML Article-specific properties) 
    paragraphs 

各フォーマットによって必要とされるものに応じて階層を構築し、それは感じています)。

オプション2 - より一般的な抽象化に基づいて階層を構築します。

Item 
    title 
    description 
    expirationDate 

^ 
| 

Article 
    paragraphs 

このアプローチは、私には、より柔軟でシンプルなようだが、私はRSSを構築していたときに、その後、私はしません特性を有していてもよいです入力される(expirationDate、段落)。私がオプション2に行くと、私はRSSMapperのようなクラスを作成してオブジェクトを取得し、必要なプロパティだけをRSSフォーマット(RSSMapper.mapArticleなど)にマッピングすることを考えていました(記事記事)。

今後の最善の方法とは何でしょうか?

答えて

1

オプション2)(これは基本的にはAdaptor Patternです)が正しいです。

あなたのドメインオブジェクトは、それと何らかの形で使用する必要があります。モデルをビューに変換するためにマッピング(またはアダプタ)クラスを使用することは、責任のカプセル化と分離を確実にするための最良の方法です。このように、モデルを別の第3の形式(HTMLなど)で公開したい場合は、既存のコードを変更することなく、関連するアダプタを作成するだけで済みます。

+0

ありがとうございます。私はオプション2を使い、アダプターパターンを組み込みます。 – jexx2345

関連する問題