1

私は MvvmCross ビュー モデルを試しています。私のアプリでは、同様のレイアウト構造を持つ異なるプラットフォーム間だけでなく、アプリのフォーム ファクターに応じて情報が異なる方法で表示されるアプリケーション間でも共有されます。たとえば、iPad アプリでは顧客リストと選択した顧客の詳細が同じページに表示されますが、iPhone アプリではそれらが異なるページに分割されます。MvvmCross はそのようなシナリオをすべてサポートしているため、これらすべてのアプリケーション間で共通のビュー モデル セットを共有するのは非常に簡単です。

ただし、複数のビュー モデルで同じ詳細を共有すると便利な場合があります。たとえば、さまざまなビューで最近の Twitter メッセージや株価の更新などを表示したり、グローバル ユーザー設定 (ユーザー名、最近のログイン時間など) を表示したりできます。すべてのビュー モデルには、共有アプリの状態にアクセスするためのプロパティ AppState があるため、どのビューでもそのコントロールを AppState にバインドできます。これはデザインタイム モデルでも機能します。

いくつかのプラットフォームでテストしましたが (Windows 以外のプラットフォームはまだ試していません)、期待どおりに動作します。ただし、廃棄/脱水などの生涯シナリオはテストしませんでした。基本的に、シングルトンのプロパティにバインドされたビューの一部があります。ビュー モデルの有効期間に関連する注意事項はありますか?

さらに、そのようなシングルトンの使用が許容される場合は、シングルトン パターンまたは MvvmCross 依存性注入 (MvxResolve) のいずれかを使用できます。技術的には同じになるので、どちらの方法にも利点はありますか?

4

1 に答える 1

1

静的共有があなたとあなたのアプリで機能する場合、それは素晴らしいことです。

これにより、さまざまなライフサイクルの状況でオブジェクトが使いにくくなる理由を私が考えることができる特定の理由はありません。

statics が「眉をひそめられる」主な理由は、アーキテクチャ上の理由です。 statics は、テストしにくく、(IMHO) 長期的に維持および再利用するのが難しい密結合コードにつながります。

アプリがこれらのことを気にしない場合 (そのような場合もあります)、静的シングルトンはアプリを構築するための優れた方法である可能性があり、他の人がコードを簡単に理解できるようにすることさえできます。

このタイプの領域については、他にも次のような質問がたくさんあります。

于 2013-10-28T09:48:16.287 に答える