0

ビュー モデルのグリッドを表示しますclass M {string A, int B, float C, int D, .....}

  1. 数値が負の場合は赤でレンダリングします。
  2. セルの背景を強調表示するA is in 'xxx', 'zzz' and B = 0 or D > 200...
  3. 行の背景を灰色に設定します。E > 100 and F < 0....

これらはビジネス ロジックと見なされますか? これらのロジックがある場合、どこに配置しますか? (3)については、ビューモデルに新しい読み取り専用プロパティを作成できるのではないでしょうか? しかし、それはもはや M を POJO/POCO ではなくしますか? ビジネスロジックはドメインオブジェクトにある必要があると読みました。ドメイン オブジェクトは POJO/POCO を使用して実装されていますか?

ビジネス ロジックがドメイン オブジェクトに格納される方法を示すコード サンプルはありますか?

4

3 に答える 3

1

やろうとしていることを達成するには、いくつかの方法があります。説明の中で「View-Model」という用語に数回言及していますが、これにより、WPF または Silverlight テクノロジを使用するときに一般的なデザイン パターン「MVVM」(Model-View-ViewModel) を使用しようとしていると思われます。ビューに対するデータバインディングのサポートなどですが、他のテクノロジーにも拡張できます。

MVVM では、層はモデル、ビューモデル、およびビューに分割されます。

モデルは本質的にドメインであり、ドメイン固有のモデリングにのみ使用されます。アプリケーション エンティティはここに存在する必要がありますが、計算やドメイン エンティティの操作は行わないでください。例えば。それがサイクリング ドメインである場合、'Bike' および 'Rider' クラスはここに存在する必要がありますが、レースの勝者の計算、またはアプリケーション GUI で勝者を表示する色に関連するコードはありません。

View-Modelは、View (ユーザー インターフェイス) に表示されるドメイン エンティティを準備する場所です。ドメイン エンティティを新しいクラスにラップし、コンストラクターでドメイン オブジェクトを受け取りますが、既存のプロパティをビューに表示するプロパティに公開または変換することで、ほとんどの場合これを実現できます。サイクリングの類推では、Bike オブジェクトには Make、Model、Cost、RRP、TimeBuilt のプロパティが含まれている可能性があるため、ビュー モデルでは Make、Model プロパティを公開しますが、Cost と RRP をマージンと共に変換して、小売価格を考え出します。価格(フロントエンドに表示)。

ご想像のとおり、 Viewは、この情報が表示される場所です。これは、デスクトップ、モバイル、または Web フロント エンドである可能性がありますが、実際には問題ではありません。これは、UI のレンダリングを行う場所でもあります。お客様にお得な情報を強調し、小売価格が非常に高いバイクを緑色で色付けしたい場合は、ここで行います。

したがって、あなたの例に関連する場合、オブジェクトの表示方法のフォーマットはビューで達成する必要があります。MVVM を使用していない場合でも、ドメイン オブジェクトを Wrapper クラスに拡張してデプロイおよび操作することで、非常によく似た結果を得ることができます。次のようなあなたのルール

A が 'xxx'、'zzz' にあり、B = 0 または D > 200 の場合、セルの背景を強調表示します

ビューモデルクラスのブール値でモデル化でき、ドメインオブジェクトを非固有のコードで汚染することなく、必要な効果を得ることができます.

アーキテクチャの選択 (MVC、MVP、MVVM など) に関係なく、これらはアプリケーションのレイヤー間の関心の分離を展開するため、開発するのに適したガイドラインです。

于 2012-05-14T07:23:42.860 に答える
0

「ビューモデル」という用語は間違っています。ビューとモデルは 2 つの別個のものであり、それぞれがアプリケーションの個別の関心事 (ビジネス ロジックをカプセル化するモデル、プレゼンテーション/表示を処理するビュー) を扱います。簡単に言えば、モデルはドメイン オブジェクトです。あなたの例で示したものは、プレゼンテーションに関連しています。モデルではなくビューに属します。

于 2012-05-13T17:41:13.497 に答える
0

3 つの計算すべての出力をオブジェクトのプロパティとして保存し、計算されたオブジェクトをビューに渡すことができます。

たとえば、ポイント 1 では、数値が負の場合は数値をレンダリングします。この色の赤をビューに渡すことができます。色を赤に決定する実際の計算は、ビジネス ロジック レイヤーで行われる可能性があります。

これが役立つかどうか教えてください。

于 2012-05-12T23:50:40.843 に答える