문제

나는 내가 놀고있는 간단한 검증 내용을 위해 유창한 인터페이스를 만들고 있습니다. 내가 알아 차린 한 가지는 다른 객체가 생성되고 있다는 것입니다.

예를 들어 아래 진술이 주어지면 :

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

모든 '.' (마지막으로 수락) 나는 물건을 새롭게하고있다. 유창한 인터페이스를 사용하지 않았다면 정적 메소드를 사용했을 것입니다.

내가 궁금해하는 것은이 인스턴스 객체를 사용할 때 성능의 실제 차이를 어디에서 알 수 있는지 알고 있다면 정적 메소드를 사용하는 데있어서 appose 로서이 인스턴스 객체 (매우 작은 객체 임).

Anthony를 건배합니다

도움이 되었습니까?

해결책

반드시 모든 곳에서 새로운 물체를 구성 할 필요는 없습니다. 인터페이스를 통해 유창한 인터페이스의 대부분을 해결하고 하나의 객체에서 많은 인터페이스를 구현할 수 있습니다. 이 경우 돌아올 수 있습니다 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);
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top