5

私は、遊んでいるいくつかの単純な検証用のいくつかの流暢なインターフェースを作成している最中です。私が気づいたことの 1 つは、さまざまなオブジェクトが多数作成されていることです。

たとえば、次のステートメントが与えられます。

Check.Assertion.ForValue.That(value, "value").IsNotNull() : void

Check.Assertion.ForArgument.That(value, "value").IsNotNull() : void

Validate.Assertion.ForDate.That("Test").IsNotNull() : bool

Validate.Assertion.ForNumeric.That("Test").IsNotNull() : bool

すべてのための '。' (最後のものを受け入れる) 私はオブジェクトを新しくしています。ここで流暢なインターフェースを使用していなければ、静的メソッドを使用していたでしょう。

私が疑問に思っているのは、この数のインスタンス オブジェクト (それらは非常に小さいオブジェクトであることに注意してください) を静的メソッドでの作業と比較して使用すると、パフォーマンスの実際の違いに気付く場所を誰かが知っているかどうかです。

乾杯アンソニー

4

1 に答える 1

9

必ずしもあちこちに新しいオブジェクトを構築する必要はないことに注意してください。流暢なインターフェースのほとんどをインターフェースを通じて解決し、1 つのオブジェクトに多くのインターフェースを実装するだけかもしれません。その場合this、新しいインターフェイスを介して を返すだけです。

例:

public interface ICheckAssertionForValue
{
    ICheckAssertionForValueThat That(Object value, String name);
}

public interface ICheckAssertion
{
    ICheckAssertionForValue ForValue { get; }
}

public class Check : ICheckAssertion
{
    public static ICheckAssertion Assertion
    {
        get { return new Check(); }
    }

    ICheckAssertionForValue ICheckAssertion.ForValue
    {
        get { return this; } // <-- no new object here
    }

    ICheckAssertionForValueThat ICheckAssertionForValue.That(Object value, String name)
    {
        return new SomeOtherObject(value, name);
    }
}
于 2009-07-13T07:38:36.943 に答える