2009-08-25 8 views
1

私はデスクトップGISアプリケーションを作成しており、MapXtreme、MS Virtual Earthおよびカスタムマップエンジンをサポートしています。アプリケーションの実行時に、このようなマップエンジンを変更するFactoryクラスがあります。依存関係注入を使用して実行時に作成する実装を決定する

public class MapFactory implements IMapFactory 
{ 
    public IMapEngine createInstance(MapType type) 
    { 
     if(type==MapType.MapXtreme) 
      return new MapXtremeEngine(); 
     else if(type==MapType.VirtualEarth) 
      return new VirtualEarth(); 
     //....other code 
    } 
} 

実行時に型パラメータによって適切なMapEngine実装を作成するためにDependency Injection Frameworkを使用できますか?

+0

提案はありますか? – mcaaltuntas

答えて

2

この例は、オブジェクトを条件付きでインスタンス化するための正確な正しいパターンです。インスタンスを作成する必要がある場合は、コンストラクタにIMapFactoryを受け入れます。

ほとんどのDIフレームワークは、IMapFactoryインスタンスを配布します。

+0

DIフレームワークで、タイプパラメータを使用してVirtualEarth、MapXtreme、または..のインスタンスを作成できますか?そうするための設定方法の例を教えてください。 – mcaaltuntas

+0

私が言ったように、あなたが持っているものは、条件付きのインスタンス化を設定する正しい方法です。 VirtualEarthとMapXtremeのインスタンスを作成するためのDIフレームワークは必要ありません。工場ではそうしています。 DIフレームワークは、ファクトリのインスタンスを作成します。 –

+0

これらのクラスに複雑なコンストラクタがあり、単純化のためにそれらを残していない限り、それは事実ですか? –

関連する問題