流暢インターフェース - オブジェクトの数が作成されます
-
12-09-2019 - |
質問
私は私が遊んでいますいくつかの簡単な検証のもののためのいくつかの流暢なインターフェイスを作成する過程でいます。私が気づいたことの一つは、私が作成されているさまざまなオブジェクトの多くを持っているということです。
たとえば、以下のステートメントを与えます:
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
すべてのための ''私は、オブジェクトをNEWINGアップしています(最後のものをそのまま使用します)。私はここに流れるようなインターフェイスを使用していなかった場合、私はちょうど使用される静的メソッドを持つことになります。
静的メソッドでの作業に並置としてインスタンスオブジェクトのこの番号(彼らは非常に小さなオブジェクトであることに注意してください)を使用した場合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);
}
}
所属していません StackOverflow