2010-11-19 7 views
1

私が取り組んでいるプロジェクトでは、Flex 4の使用を開始しました。特定のフレームワークを使用せず、管理者は完全なビュー/分離アーキテクチャを望んでいます。基本的な原則は、ActionScriptクラスをモデルとして.mxmlビューに関連付けることです。Flex4 - コーディングアーキテクチャ、ビュー/モデル分離

2人をリンクする方法を理解するのは苦労しています。誰が誰を参照し、どの程度まで私の視点でスクリプト部分を排除できますか。

本当にありがとうございます。

ありがとう

答えて

1

また、Silverlight世界のMVVMに非常によく似ている「プレゼンテーションモデル」パターンを使用することもできます。違いは、Flexでは、Silverlightがより多くの配管を必要とする場所は非常に簡単です。

アーキテクチャでは、このように書きます:

  • Viewはちょうど図です。すべての宣言...非常に少ない不可欠コード
  • プレゼンテーションモデル(PM)は
  • モデルは、データ、サービス、およびクライアント側のビジネスルール

ビューを含むモデルへのUIの挙動や接着剤が含まれていますPMを参照し、PMのプロパティにデータバインディングを使用します。 PMはモデルをラップし、UIレベルの検証、UIレベルの動作、およびフォーマットデータを追加します。 PM、MVCとMVPのような

"別居プレゼンテーション・パターン" とは、以下の "ilities" のために本当に重要です:

  • ユニットテスト容易
  • 意匠
  • 保守
  • 移行性空気に(ブラウザへデバイス...など)
+0

このソリューションは、私たちが配置しているアーキテクチャと密接に似ているようです。私が正しく理解したら、モデルの属性をビュー内の各コントロールにマッピングし、これらのコントロールの変更を属性に直接割り当てる必要があります。 – Sandy

+0

その他の質問:PMモデルでは、独自のモデルを持つ他のカスタムチャイルドコンポーネントを使い始めると、コントローラなしでそれらの間の通信をどのように管理できますか? – Sandy

+0

あなたが正しく質問していることを理解している場合は、モデルをPMのパブリックプロパティにすることが多いため、ビューに適応する必要がない場合はモデルのプロップに直接バインドできます。ビューに適応する必要があるものについては、カスタムゲッターを作成して適応を行います。 PM間の通信に関しては、共通のモデルを使用することもできますし、何らかのイベントバスを使用することもできます。私は軽量Inversion of Controlコンテナを使用してモデルとイベントバスを私のPMに注入します。 –

1

通常、モデルにはほとんどロジックが含まれていないと考えられます。ビューには、モデルが提供するデータを表示するロジックが含まれています。そのようなビューはモデルにアクセスするものであり、それ以外の方法ではありません。これにより、同じデータセットに対して複数の異なるビューを定義することも可能になります。

Flexでは、データバインディングプロバイダとコンテンツプロバイダの両方が、データをMXML構造体に統合するのに適しています。特にデータバインディングを使用すると、コンテンツをそれほど考えずに使用することができます。特にすべての参照を自分で定義する必要はありません(コードに記述する必要はありません)。

残りのロジックをビューから削除するには、通常、MVCアーキテクチャでコントローラを使用します。コントローラは、ビューとモデルの間の「仲介人」であり、データを処理することになっています。したがって、アプリケーションが使用するすべてのロジックがそこにあるはずです。そうすれば、モデル(純粋なデータのみを含む)、ビュー(データのみを表示する)、コントローラ(すべてをまとめてアプリケーションロジックを追加する)の厳密な分離ができます。そのトピックの詳細については、Wikipedia articleを参照してください。

最後に、MVCの管理を容易にするフレームワークがいくつかあります。 ActionScriptで最もよく知られているのはおそらくRobotLegsです。

+0

ロジックの内容については、別の方法ではありませんか? モデルがビューの表示方法を定義するべきではないのですか? – Sandy

+0

@Sandy:いいえ、モデルはビューに依存しないようにする必要があります。ビューが存在することを実際に知るべきではありません。モデルにビューの概念がある場合は、おそらく間違っているでしょう。 MVCの「コントローラ」、MVPの「プレゼンター」、または「プレゼンテーションモデル」は、ビューが存在することを知り、モデルデータの表示/変更を容易にするためのものです。 –