2011-12-11 6 views
1

XMLファイルを使用してオブジェクトのさまざまなプロパティを定義するコードをリファクタリングしています。このオブジェクトReportを呼び出します。クライアントごとに年次、四半期ごとなどのレポートがあります。そのようなレポートは何百もあります。このデザインの問題を最もよく実装するにはどうすればよいですか?

現在、これらのXMLファイルを読み込み、それらをReportオブジェクトに変換して処理するためにJAXBを使用しています。 XMLに設定されているプロパティに応じて、コードにifやelseが多く含まれています。これに対応する動作を実装する必要があります。

私は、新しいコードでこれを実装する最良の方法を考えていました。 XMLファイルは変更できません。

+1

対象とする言語は?そして、 'if'と' else'sに正確に何があるのか​​は、*レポートオブジェクト内のいくつかのプロパティが設定されているのか、プロパティがとりうるさまざまな値の上にある 'スイッチ'かですか? – hroptatyr

+0

これはJava用です。 if sとelseは異なる動作を定義することです。 XMLのプロパティに値が定義されている場合は、何かを実行します。一部のXMLでは、プロパティも完全になくなっている可能性があります。 – user325643

+0

あなたが直面している問題は何ですか、なぜあなたは既存のソリューションを再設計しなければならないと思いますか?私は質問に挑戦したくありません - それを理解しようとしています... – home

答えて

1

デカップリングが必要なような音です。 つまり、レポートオブジェクトを基本的に解析されたxmlであるレポートの説明に分割し、それを使用する一連のクラスを作成します。

ので、レポートのコレクションは e.g.reportheader、reportbodyとreportfooter、

その後、reportbody.itemsが戻ってくるグループオブジェクトが返さreportdescription上のメソッドを持つことができます。 あなたが戻ってきたレポートグループgroupheaderのボディフッターなど

まだ多くのifsがありますが、それは多くのクリーナーになります。

PS現在のxmlが構造/形式の変更の恩恵を受ける場合、xslトランスフォームは重大なオーバーヘッドであってはならず、劇的に単純なコードになる可能性があります。

関連する問題