我有一个关于实现依赖注入模式的问题。我有一个需要访问 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;
}
}