MVCまたはMVPアプリでビューとコントローラーを作成するためのパターンは何ですか?

StackOverflow https://stackoverflow.com/questions/627625

質問

ドキュメントを編集するためのMVC / MVP GUIで作業しています。ドキュメントにはツリー構造があり、一部のノードはテキストを表し、他のノードは画像を表しています。アプリモデルにはコマンドスタックも含まれ、コマンドはモデル上で直接動作します。

異なるノードには根本的に異なるコントロールがあるため、各ノードに個別のMVC / MVPトライアドを実装することを計画しています。私が問題に直面しているのは、ピアVおよびCコンポーネントの作成と破棄を同期する方法です。

私のアイデア:
-各ノードで「childAdded」をリッスンします;イベントを入力し、それらのイベントに基づいてピアを作成します
-モデルでノードを作成するためにファクトリーを使用し、そのファクトリーでピアも作成します

動的ビュー/コントローラー生成の一般的なパターンやベストプラクティスは何ですか?

役に立ちましたか?

解決

このサイト

でいくつかのUIパターンを確認することをお勧めします

特定の質問については、次のことを行います

ノードを表示するフォームは、INodeViewインターフェイスを実装します

INodeTreeFormインターフェイスの1つのメソッドは、個々のノードを追加する機能です。 NodeTreeScreenオブジェクトで作成されたNodeクラスを渡します。 2つの重要なプロパティがあります。最初はノードのキーで、2番目はノードのタイプです。

キーを持つコントロール上のフィールドがあるようにノードを追加します。

INodeTreeFormインターフェイスと共に、INodeViewインターフェイスがあります。これは、表示領域または切り替えるフォームをカバーします。

ノードをクリックすると、キーがNodeTreeScreenに渡されます。NodeTreeScreenは、ノードのタイプを確認する傾向があります。 INodeViewオブジェクトのコレクションがあります。 INodeViewのプロパティの1つは、ノードのタイプです。

正しいINodeViewを取得します。現在のINodeviewを閉じ、現在のINodeViewを取得したものに設定し、ノードに渡し、それ自体を表示するよう指示します。

INodeViewが何をするかを選択できます。異なるタイプごとにフォーム/コントロールを登録できます。たとえば、INodeViewText、INodeViewImageなど。または1つのオムニバスINodeViewFormのみで、INodeViewを実装するオブジェクトに実際の描画を処理させます。

GUIツールキットによっては、1つのフォームで多くの異なるインターフェイスを実装できることを意味する場合があります。

ノードの追加、削除、および作成に関しては、これはINodeTreeFormとNodeTreeScreenを実装するフォーム間の相互作用によって行われます。これにより、モデルを変更するために既に作成したコマンドを実行します。

インターフェースの背後にあるすべてのものを実装することにより、残りのソフトウェアを台無しにすることなく実装を変更できます。さまざまなインターフェースを実装するオブジェクトは、他のオブジェクトに影響を与えることなく、インターフェースを正しく実装し続ける限り変更できます。

これは、Martin Fowlerのサイトのパッシブビューの変形です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top