2009-08-14 7 views
1

私はちょうど最近PureMVCフレームワークを学びましたが、ProxyとMediatorオブジェクト間の結合について少し混乱しています。 thisページのリンクは、フレームワークを説明するいくつかのドキュメントに接続します。メディエータがFlex PureMVCのプロキシに結合されるのはなぜですか?

私が検討したPureMVCの図と例は、しばしばメディエーターとプロキシの直接結合を示しています。新しい通知を送信するのではなく、プロキシの状態が更新されると、(ファサードからのプロキシへの参照を取得する)メディエータが状態を更新します。

これは確かにコードのロジックを簡素化するようですが、2つの一見異種のコンポーネントを直接結合します。私の理解では、メディエータの目的は、ビューからイベントをPureMVC通知に変換することです。プロキシは、データを収集してビューにリレーする機能を実行するためのものです。これらの2つのコンポーネントは、アプリケーションの異なるレイヤーに存在するようであり、おそらく必ずしも一緒に結合される必要はありません。

状態が更新されたときにプロキシオブジェクトが独自の通知を送信し、ファサードによって関心のあるメディエータに転送されるのは理にかなっていませんか?

答えて

2

通知によってメディエータを更新しても、プロキシに結合されますが、それは問題ありません。

あなたがプロキシをカップルしない限り、私はそれが大丈夫だと言います。

フアン

+1

申し訳ありませんがわかりません。メディエータが(プロキシから送信された)ファサードから通知を受信し、ビューを更新するために使用されるデータオブジェクトを含む場合、それはどのようにプロキシに結合されますか?あなたはそれらが間接的に通知を通じて結合されていることを意味しますか? – bedwyr

+0

申し訳ありませんが、前のコメントはあまり明確ではありません。 私が意味することは、メディエイターは、それらの「内部」を表現しなければならないために、常にプロキシに結合されているということです。ビューは一般的にモデルについての「知る必要がある」。私には、通知を介してビュー/メディエータを更新するか、または(ファサードを使用して)プロキシに直接アクセスすることによって更新することに大きな違いはありません。 それが逆ではない限り(プロキシはメディエーターについて知っておく必要があります)、私は大丈夫だと思います。 これが少し意味をなさないことを願っています! Juan –

+0

実際、それはより意味をなさない - ありがとう。私はPureMVCフォーラムでいくつかの記事を読んでいましたが、このテーマには数多くの意見があり、その多くはかなり激しく抱かれています。あなたの考えをありがとう! – bedwyr

2

は、それはときファサードによって興味メディエータに転送され、その状態の更新、プロキシオブジェクトは、独自の通知を送信持っているより多くの意味を成しませんか?

はい、これはまさに必要なことです。 PureMVCは、Facadeによってリンクされた軽量MVC構造を持つNotifier/Observerパターン実装です。私は、プロキシーをメディエーターに結びつけないことを強く勧めます。データ状態が変化したときにプロキシによって送信される通知にのみメディエータが応答することができます。これにより、これらのクラスを完全に切り離すことができます。

は、Flexを使用している場合、私はPureMVCののAPIを模倣し、PureMVCのマルチコアのフレックス特定のポートであるHydraMVC/HydraFrameworkをお勧めしますがはるかに少ない冗長で、かつ経由でプロキシからサーバーとの対話を切り離すための方法を含んでいますDelegateRegistry。 (私はこのプロジェクトの主な開発者ですが、それは完全にOSSであり、自由に使える/貢献しています)実装しているMVCフレームワークに関係なく、通知でプロキシ/メディエータを完全に分離することを強く推奨します。

関連する問題