これから行う質問は、Flex プラットフォーム (および MVC を実装するふりをしているいくつかのフレームワーク) に関する私の最新の作業に触発されたものですが、さまざまな専門知識を持つ人々を巻き込むのに十分一般的なものだと思います。
かなり長い間、私は Cairngorm のようなフレームワークによって提案されたパラダイムに従ってきました -
ビュー、シングルトン モデルのプロパティへのバインド、およびイベントのディスパッチ。イベントはフロント コントローラーによってキャッチされ、結果としてコマンドが実行されます。コマンドは、サービスを呼び出し、データを取得し、モデルを提供します。モデルはバインディングを通じてビューを暗黙的に更新します。
次のデータ構造にたどり着くまでは、すべてうまくいきました。
ユーザーには多くのフォロワー (ユーザー) がいます 多くのユーザーがフォローしています 多くのユーザーがたくさんの写真を持っています 多くの場所をフォローしています
写真には多くのいいね(ユーザー)がいる 場所がある クリエイターがいる 関連写真が多い
場所には多くの写真があり、多くのフォロワーがいます
繰り返しになりますが、Cairngorm によって提案されたアイデアを使用しても問題ありません。たとえば、currentUser、currentLocation、および currentPhoto を持ち、それらにバインドするだけです。
問題はビュー自体にあります。想像できるように、一連の複雑な「ページ」ビューがあり、ドリルされた情報として提供されます。たとえば、場所のページには、最新/人気の写真のグリッド、フォロワー用のパネル、それらの写真が撮影された座標に基づく地図が表示されます。問題は次のとおりです。
明らかに、パフォーマンス上の理由から、特定の場所をフォローしているすべてのユーザー、または場所にある可能性のあるすべての写真を取得することはできません。一部はプリフェッチしており、その他はオンデマンドでサーバーから提供されます。
たとえば、フォロワーのアバターページをクリックすると、そのユーザーの写真の小さなグリッド、または sth を取得する必要があります。しかし、モデルには currentUser が 1 つしかありません。
これは、なぜ中央のシングルトン モデルにバインドする必要があるのでしょうか?という疑問につながります。すべてのビューを一種のレスポンダーに変えることはできませんか。つまり、ビューは再び偶数をディスパッチしますが、今回はモデルを提供する代わりにコマンドが呼び出し元のビューを直接提供します。
すべてのビューが IResponder を実装するため、結合はありません。このコマンドは、呼び出されたイベントから取得する IResponder のみを必要とします。
私が考える「モデル」は別の役割を果たします。これはキャッシュのようなもので、ローカル ストレージ用のグローバル ディクショナリのようなもので、サーバーから要求を行う前にコマンドによってチェックされます。このようにして、サーバーへの呼び出しをいくつか節約できますが、データが非常に散発的である場合、この同じデータが他のデータと一緒に何度もフェッチされます。(キャッシュにいくつかのユーザーデータがあるかもしれませんが、一般的に、一貫性のために、フォロワーデータの一部が既にあるかどうかに関係なく、サーバーを呼び出してフォロワーデータのコレクションを取得します)
これらのアイデアに関するフィードバックをお待ちしております