次のコードを検討してください。
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 ステートメントを配置する必要があります。
私には (このテーマは初めてですが)、これは漏れやすい抽象化のように思えます。実装が何かを処理する方法のために、コードにメソッド呼び出しを配置する必要があります。
誰かがこれを理解し、私が正しいか間違っているかを確認するのを手伝ってくれませんか.
ありがとう