私は確かに何か巨大なものを見逃しています、私はこの問題を何度か見たので、これらのコード臭を解決するあなたの意見を知りたいと思います。MVCパターンの多型の過度使用?
- 背景は、MVCアーキテクチャパターンを使用して整理されたWindowsフォームアプリです。
- データは階層的な方法(ツリーモデル)で構成され、異なるタイプのデータを表すさまざまなタイプのノードがあります。
- データビューは、顧客の要求に応じて追加または変更できるさまざまなビューを含む複合ビューです。各データノードは、いくつかのビュー(テーブル、チャート、カスタム品)を使用して表現することができ、各ビューは、1つまたは複数の異なるデータノードタイプを表示する方法を知っています。
- 表示する前に、一部のビューではデータを何らかの方法で処理する必要があります。複数のビューで同じ処理済みデータを使用できますが、すべてのビューで同じデータが使用されるわけではないため、この処理は1つのビューまたは1つのノードタイプとは関係ありません。
だから、私を悩ますことは、現在の実装では、ノードのインタフェースは、各派生ノードを実装するために必要とされる 『Node.CanProvideThisData』または 『Node.CanProvideSomeOtherData』、などの多くのプロパティで過負荷になるさ、ということです。これは、ノードのインターフェイスがすべてについてあまりにも多くを知っていることを示しています。
あなたの意見では、この処理がどこでいつ行われるのかを決定し、それぞれのビューに必要な処理済みデータが得られ、処理が重複しないようにするべきですか?
以前にも同様の問題がありましたか? MVCの実装(または実装の理解)に何か問題があると思いますか?または、これはいくつかのリファクタリングで修正できるものですか?
編集:さらに考慮すべきもう1つのことは、後で変更を処理することです。このインタフェースは、プログラマーに契約の各部分を実装させることを強いるので、新しいノード実装は即座に動作するはずです。
ありがとうございます!現在、ノードはデータをサポートしているか、サポートしていませんが、後でロジックを追加する必要があれば、簡単に「単一ベースメソッド」を作成できます。 – Groo