2012-03-27 9 views
2

クライアントアセンブリが実際の実装を認識せず、インターフェイスでのみ動作するインターフェイスを実装から分離することは可能ですか?オブジェクトの作成を別のコンポーネントにオフロードしても、実際の実装タイプに依存します。実装からインターフェイスを分離する方法

これは、レイヤーがインターフェイスとしてキャストされたオブジェクトを提供する役割を果たすリフレクションを使用して考えることができます。型の実際のインスタンス化は、リフレクションによって行われ、キーがインターフェイスであり、実装オブジェクトを評価するディクショナリに格納されます。このようにして、クライアントコードは実装のタイプを知らない。

これを反映させるデザインパターンはありますか?答え

+0

デザインパターンは「Inversion of Control」です。私は反射がフードの下で使用されていると思います。 –

+0

MEFやServiceLocatorを試しましたか? –

+0

Georgeさん、ありがとうございます。私は問題を解決したかどうかチェックします。 – ganeshran

答えて

1

リフレクションは、プラグインベースのシステムの場合、例えば、ダイナミック割り当てのシナリオで有用であるようないくつかの人気のIOCを見てみましょう。そのような環境を管理したくない場合は、コード内のすべての実装を宣言し、コンシューマでのみインタフェースを使用してください。

どちらの場合でも、どちらの場合でも、作成する「」タイプを決定する「誰か」が存在する必要があります。プラグインベースのロジックの場合は、例えばPluginManagerとなりますが、それ以外の場合はfactoryメソッド/ calssになります。あなたがineterestedしている場合

デザインパターンは、IoCです。

希望は、このパターンは制御の反転(IOC)と呼ばれている

1

を事前に

おかげではい、あなたがここで説明することはIOC(コントロールコンテナの反転)と呼ばれている - 反射を除いて、あなたは、コードを経由して(アプリ/ web.configファイルで)構成やブートストラップを使用することができます。

StructureMapNinject

1

に役立ちます。これの最も一般的なアプリケーションは、Dependency Injection(DI)として知られています。

Dependency Injection in .NETという本は貴重な資料です。

関連する問題