依存性注入パターンの実装について質問があります。Web サービスへのアクセスを必要とするクラスがあります。このパターンによると、クラスでサービスをインスタンス化する必要はありません。これにより、サービスとの強い依存関係が生じるためです。これにより、クラスを構築するファクトリ クラスを作成し、そのコンストラクターで必要な正しいサービス、つまり依存関係を渡します。
私にとって厄介なのは、Web サービス クライアントのインスタンスをオブジェクトに渡しているのに、サービスを開いたままにしないことです。
インターフェイスだけではなく、クライアント全体を渡す必要がありますか? このようにして IDisposable を実装し、サービスへの接続を閉じることができますか?
前もって感謝します。用語を自由に修正してください。混乱を招くつもりはありません。
例えば:
public class ProductService
{
private IProductService client;
public ProductService(IProductService client)
{
this.client = client;
}
public void DoIt()
{
client.MyWebMethod();
}
}
public class Factory
{
public static T Create<T>() where T : class
{
T item = null;
if (typeof(T) == typeof(ProductService))
{
item = new CustomerService(**new ProducttServiceClient()**) as T;
}
return item;
}
}