Pregunta

Estoy en el proceso de creación de algunas interfaces fluidas para algunas cosas simples de validación que estoy jugando un poco con. Una cosa que he notado es que tengo una gran cantidad de diferentes objetos que se están creando.

Por ejemplo, dadas las declaraciones siguientes:

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

para cada ''. (Acepto para el último) Soy Newing un objeto. Si no estaba usando una interfaz fluida aquí me tienen métodos estáticos simplemente utilizados.

Lo que me pregunto es si alguien sabe donde se podría notar ninguna diferencia real en el rendimiento cuando se utiliza este número de objetos instancia (tenga en cuenta que son objetos muy pequeños) como aproximar a trabajar con métodos estáticos.

Saludos Anthony

¿Fue útil?

Solución

Tenga en cuenta que no necesariamente tienen que construir nuevos objetos por todo el lugar. Es posible que sólo solucionar la mayor parte de la interfaz fluida a través de interfaces, y acaba de poner en práctica muchas de las interfaces en un objeto. En ese caso sólo podría volver this, sólo a través de una nueva interfaz.

Ejemplo:

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);
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top