5

Estoy en el proceso de crear algunas interfaces fluidas para algunas cosas simples de validación con las que estoy jugando. Una cosa que noté es que tengo muchos objetos diferentes que se crean.Interfaces fluidas: el número de objetos que se crean

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 (aceptar para el último) Estoy renovando un objeto. Si no estuviera usando una interfaz fluida, habría utilizado métodos estáticos.

Lo que me pregunto es si alguien sabe dónde se notaría una diferencia real en el rendimiento al usar este número de objetos de instancia (obsérvese que son objetos bastante pequeños) como para trabajar con métodos estáticos.

Saludos Anthony

Respuesta

9

en cuenta que no necesariamente tienen que construir nuevos objetos por todo el lugar. Puede resolver la mayor parte de la interfaz fluida a través de interfaces y simplemente implementar muchas interfaces en un objeto. En ese caso, puede devolver this, solo 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); 
    } 
} 
+0

Hey fresco que no había pensado en eso ... Sólo una cosa rápida, donde estamos volviendo un nuevo objeto dentro del SomeOtherObject Ese método, podría no obtenemos Compruebe para poner en práctica el ICheckAssertionForValueThat interfaz y simplemente devuelve esto de nuevo? Supongo que todo se reduce a cuánta responsabilidad debe ir en una sola clase cuando se diseña una interfaz fluida. Tal vez la respuesta es: si no lo hiciera con fluidez, todo estaría en la misma clase ... ¿qué piensas? –

+0

¿O me estoy preocupando demasiado por crear objetos nuevos? Lo único es que voy a utilizar esta interfaz un poco (es decir, para comprobar si los parámetros de los diferentes métodos son nulos y, si es así, arrojar excepciones) –

Cuestiones relacionadas