web-dev-qa-db-ja.com

モジュラーアプリケーションでメニュー項目を追加および注文する責任

次の 複数のモジュールから供給されるメニュー項目の注文 モジュール式アプリケーションのメニュー項目の注文と調整を担当する私に質問がありました。

前のリンクは、メニュー項目を提供するモジュールが、メニュー項目がどこに配置されるか(「インデックスnで」、「モジュールxの後」、「モジュールyの前」)を言う責任があることを示唆しています。さらに複数のリソースが、モジュールがメニュー項目を登録または削除できるIMenuServiceを提案しています。 PRISMフレームワーク

しかし、直感的には、メインアプリケーションが責任を負うべきだと思います。モジュールは、独自のメニュー項目を注文するためだけに、必ずしも他のモジュールを知っている必要はありません。また、モジュールは原則として、より大きなコンテキストでメニューのどこに表示されるかを決定するべきではありません。例えば。ログアウトメニュー項目は、他の項目とのオフセットが必要です。そうでない場合、特定のメニュー項目は、現時点でアプリケーションによって重要であると見なされているため、特別な色になります。

そのため、その検討の結果、メインアプリケーション(コア)がこれをどのように処理できるかを考えました。ただし、この場合、メインアプリケーションはメニュー項目とその具体的なタイプに関する知識を持っている必要があります。したがって、異なるモジュールによって提供されるアイテムを更新するか、IOCコンテナーのresolveメソッドを使用して、それらの間で異なるようにし、一種のサービスロケーターアンチパターンを生成する必要があります。(nを使用したコンストラクターインジェクションメニュー項目の依存関係も私には正しくないようです)

ですから、これが意見に基づく質問かどうかはわかりませんが、確かにデザインの質問です。

ソリューションとして何を提案しますか、またはこのシナリオは他のアプリケーションによってどのように処理されますか?メニューを構成する標準的な方法は何ですか?

詳細情報:私は現在、MVVMとしてXamarinとPrism(DryIOCを使用)およびIOCフレームワーク)を使用してモジュラーモバイルアプリケーションを開発しています。

2
Creepin

メニュー自体がスタンドアロンモジュールであると考えましたか?このコンテキストでアプリケーションの「コア」が何を意味するのかわからないことを認めなければならないので、すべてのモジュールについて知る必要があるかどうかはわかりませんが、メニューがスタンドアロンになる方法はわかります他のモジュールの表示を順序付ける方法を知ることを担当し、「ユーザーが選択したモジュールX」などのイベントをコアに送信できるモジュール。

2
RibaldEddie