2011-07-17 7 views
1

たとえば、私はこのモジュールでPrism用のモジュールを作りました。モデルとサービスは2つのフォルダに分かれています。 Modelsフォルダでは、Carクラスについて説明しました。 今、Factoryを使用してCarクラスのインスタンスを作成します。 質問。それを正しく行う方法。Question on Prism 4

私は2つのバリエーションを考えました。

1)新しいインフラストラクチャフォルダを作成し、CarFactoryクラスを追加します。

2)CarServiceサービスを作成し、それを使用してCarクラスのインスタンスを作成します。

答えて

0

Prismでも使用されるサービスロケータを使用します。これは、通常UnityまたはMEFです。

+0

このシナリオでは、インスタンスがインスタンス化されるとき、OPはパラメータを 'Car'クラスに渡す必要があります。 'Car'クラスがインスタンスデータを必要とするだけでなく依存性を持っている場合、何らかの「初期化」パターンを確立せずにストレート' ServiceLocator'とやりとりするのは難しいです。工場にはこの制限はありません。 'IUnityContainer'は' ParameterOverrides'を介してパラメータを渡すことができますが、一般的にはコンテナへの参照を渡すのは面倒です。 –

0

私は後者のアプローチを好む。これにより、私たちはコンポーネントをより良く分離することができます。あなたのViewModelがICarServiceを受け入れるならば、それを簡単に模倣することができます。をテストするときに、ICarServiceの実装が偽装できます。

これは分かりやすく、一般的な工場よりも多くのロジックを配置するのに適しています。たとえば、通常リポジトリに置くメソッドをそこに配置します。 (Save、Getなど)。