考虑这段代码:
public class MyClass()
{
public MyClass()
{
}
public DoSomething()
{
using (var service = new CustomerCreditServiceClient())
{
var creditLimit = service.GetCreditLimit(
customer.Firstname, customer.Surname, customer.DateOfBirth);
}
}
}
我们现在想要重构它以松散耦合它。我们最终得到了这个:
public class MyClass()
{
private readonly ICustomerCreditService service;
public MyClass(ICustomerCreditService service)
{
this.service= service;
}
public DoSomething()
{
var creditLimit = service.GetCreditLimit(
customer.Firstname, customer.Surname, customer.DateOfBirth);
}
}
看起来不错吧?现在任何实现都可以使用该接口,一切都很好。
如果我现在说实现是一个 WCF 类,并且重构完成之前的 using 语句是有原因的,那该怎么办。即/关闭 WCF 连接。
所以现在我们的接口必须实现一个Dispose
方法调用,或者我们使用工厂接口来获取实现并在其周围放置一个 using 语句。
对我来说(虽然对这个主题很陌生),这似乎是一个有漏洞的抽象。我们不得不将方法调用放在我们的代码中,只是为了实现处理东西的方式。
有人可以帮助我理解这一点并确认我是对还是错。
谢谢