2

Javascript (WinJS) と HTML を使用して単純な Windows 8 LOB アプリケーションを構築しています。アプリケーションでは、サードパーティの依存関係を持ちたくありません。アプリケーションの構造を決定するとき、どのパターンがテクノロジと WinJS フレームワークに最も適しているかを議論しています。

これらのパターンを使用することの主な長所/短所に関する私の最初の考えは次のとおりです。

MVVM

MVVM

  • 長所: ViewModel でビジネス ロジックを明確に分離し、BL の (単体) テストを容易にする
  • 短所: WinJS には、すぐに使用できる 1 回限りのデータバインディングと一方向のデータバインディングしか実装されていません。双方向のデータバインディングとコマンド (イベントへのバインディング) は実装されていません。これらは独自の方法で実装する必要があります (ビューでほとんど宣言的な構文に固執したい場合は、注意が必要です)。

MVP

MVP

  • 長所: プレゼンターには、ビュー ロジックと共にすべてのビジネス ロジックが含まれており、それ自体で (単体) テストできます。このアプローチでは、データ バインディングは必要ありません。
  • 短所: ビューとプレゼンターのコードは、ステータスの変更を相互に通知する必要があるため、MVVM の場合よりも冗長になります。ビューはイベントをプレゼンターに転送する必要があり、プレゼンターは状態が変化したときにビューを更新する必要があります。

MVC

MVC

  • 長所: ビューは非常に軽量で、このアプローチでもデータ バインディングは必要ありません。
  • 短所: コントローラーは、入力イベント (キーボードやマウスのイベントなど) を登録して処理するだけでなく、ビジネス ロジックも含める必要があります。MVVM の ViewModel および MVP の Presenter と比較すると、このクラスは最も肥大化し、(単体) テストがやや難しくなります。

これらに基づいて、このアプリを構築するために MVP を選択します。あなたはこれに賛成できますか、それとも反対できますか?

4

1 に答える 1

2

さまざまなデザイン パターンと優れたグラフィックスの説明方法が気に入ったので、何かを投稿します (ところで、それらのソースはありますか? 含める必要があります)。

MVVM の短所は、双方向の更新を独自の方法で実装する必要があることです。しかし、MVP パラダイムを使用すると、とにかくカスタムの方法でこれを行う必要があるようです。MVP を使用する場合、データバインディングをまったく使用していませんか? MVVM を使用して、WinJS の問題を解決する方法を見つけてください。私は WinJS に精通していませんが、これをカスタム オブジェクト/プロパティでラップし、変更されたイベントを起動して、何らかの方法でデータ バインディングを処理できるようです。

于 2012-10-29T22:08:49.020 に答える