2009-07-14 23 views
0

私はこのような状況ではPureMVCの中に継承したクラスの眺めのためのベストプラクティスを思っていた:継承クラスとダイナミックビュー(AS3)

  • 複数のクラスは、BaseClassの(InheritedClass1とInheritedClass2を言うことができます)
  • を継承それぞれのInheritedClassは、それぞれのビューを持ちます(基本ビュークラスから派生していますが、それぞれユニークです)。
  • 与えられたデータセット(InheritedClass1/2オブジェクトのArrayCollection)を使用すると、それぞれのビューを動的にロードする必要があります。
  • データセットが比較的大きい、(それだけで、現在表示されているオブジェクトをインスタンス化するため)ので、TileListのがいいだろう

私はカップルのソリューションを考えることができますが、私は彼らがあまりにも「ハック」であることがわかりましたビューで

  • :いいえ、不要なメモリの増加(米国:州(「InheritedClass1」状態に設定InheritedClass1オブジェクトを追加する) の長所をビュー属性BaseClassViewオーバーリピータ最善の解決策であることがオブジェクトは必要に応じてインスタンス化されます) 短所:ビューはdepですデータ型に依存するので、結合を追加します。 利点:Works。ArrayCollectionをループし、AddChild()にデータ型に基づいてビューを追加します。 短所:メディエータは、ビューに物を追加しています。これは、メディエータとビューの分離のポイントを打ち負かします。リピータよりも遅い

いずれかのコメントや他の提案があります。ありがとう!

答えて

1

最初の例が好きなら、答えは簡単です。 Mediator上で、コンポーネント(または状態)を表示するためにデータ型を割り当てるマップ(Object())を持たないのはなぜでしょうか。例:

private static var map:Object = {"ic_oneType": "ic_oneState", 
           "ic_twoType": "ic_twoState"} 

メディエータは、そのマップをBaseClassViewに割り当てることができます。

mediatorから供給されたデータに基づいてすべての継承ビューをレンダリングするviewProxyの形式が必要であるという考えに同意する可能性があります(たとえば、最初の例)。具体的な例がなくても、あなたのUIで状態が最善の行動であるかどうかを確認または拒否できます。

1

メディエーターは、ビューの一部です。ビューからそれらを分ける方法は私を超えています。 Dynamically adding View components: where should I do it?:私はオプション2

となったのだ

はここPureMVCのフォーラムからの話題です。 "pureMVC"による投稿は興味深いはずです。

また、データセットのサイズが問題になることがあります。それが本当に大きい場合は、各アイテムのコンポーネントを追加するのではなく、レンダラーを使用してListを使用することを検討する必要があります(リピーターはそれを行います)。これは、モデルの主成分を切り離すためにデータをラップする必要があるため、さらに複雑になります。

0

短所:メディエータは

ないメディエータとビューの分離点を本当に敗北ビューに物事を追加している:彼らはドキュメントがコラボレーションペアとしてを参照するものだとすべきそのように扱われる。

1

短所:ビューはとても一般的

を連結追加、ビューコンポーネントは、ドメインデータを表示するよりも他の目的を持っていない、おそらくユーザがそれと対話することを可能にする、データ タイプに依存しています。これは、ビューコンポーネントがドメインデータをある程度理解する必要があることを前提としています。

したがって、ビューコンポーネントにVOのコレクションを追加しても、「悪い」カップリングは追加されません。 「悪い」結合は、ビューコンポーネントがモデル層に到達してデータを保持するProxyを操作する方法を知っているときです。または、モデル層のプロキシが、ビューコンポーネントまたはそのメディエータにデータをポーズする方法を知っているとき。

メディエータがメディエータとビューの 分離のポイントを敗北ビュー、 に物事を追加しています。

コード化されたシグナルが指摘しているように、MediatorとViewコンポーネントを分離しようとしていません。 Mediatorは、PureMVCシステム内の1つのアクターであり、ビューコンポーネントを認識し、それとシステムの残りの部分との間の通信を仲介します。 Mediatorは、View階層とModel階層の間の結合を緩めることに関して、システム内で最も重要なアクターです。

ビューコンポーネントと通信するために、他のアクタは通知を送信します。これは、メディエータが表示コンポーネントの公開APIを操作して聞き取り、応答します。データをスプーンフィードしたり、メソッドを呼び出すことができます。これにより、アプリケーションの残りの部分は、コンポーネントについて何かを知る必要がなくなります。

メディエータは、イベントのコンポーネントをリッスンし、モデル層からデータを取得したり、メモを他のメディエータに送信したり、コントローラ層のコマンドをトリガしたりします。これにより、コンポーネントは、接続されているシステムについて何かを知る必要がなくなります。プロパティとメソッドのAPIを公開し、独自の動作をカプセル化し、システムが知るべき事が起きたときにイベントを送信します。

MediatorsコンポーネントとViewコンポーネントが一緒になって、アプリケーションのView Tierを構成します。

- =クリフ>