5

Je suis en train de créer des interfaces fluides pour certains éléments de validation simples avec lesquels je joue. Une chose que j'ai remarquée, c'est que j'ai créé beaucoup d'objets différents.Interfaces fluides - le nombre d'objets en cours de création

Par exemple, compte tenu des énoncés ci-dessous:

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 

pour chaque '' (Accepter pour le dernier) Je suis un nouvel objet. Si je n'utilisais pas une interface fluide ici, j'aurais juste utilisé des méthodes statiques. Ce que je me demande, c'est si quelqu'un sait où l'on remarquerait une réelle différence de performance lorsqu'on utilise ce nombre d'objets d'instance (notez qu'il s'agit d'objets assez petits) pour faire appel à des méthodes statiques.

Vive Anthony

Répondre

9

Notez que vous ne devez pas nécessairement construire de nouveaux objets dans tous les sens. Vous pourriez juste résoudre la plupart de l'interface courante à travers les interfaces, et juste implémenter beaucoup d'interfaces sur un objet. Dans ce cas, vous pouvez simplement retourner this, juste à travers une nouvelle interface.

Exemple:

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 cool que je ne l'avais pas pensé ... Juste une chose rapide où nous revenions un nouvel objet dans le SomeOtherObject Cette méthode, ne pourrions-nous faire pour mettre en œuvre le règlement ICheckAssertionForValueThat interface et juste retour cela encore? Je suppose que cela revient à la responsabilité qui devrait aller dans une classe unique lors de la conception d'une interface fluide. Peut-être que la réponse est: si je ne le faisais pas couramment, tout serait dans la même classe ... qu'en pensez-vous? –

+0

Ou est-ce que je m'inquiète trop de créer de nouveaux objets ?? La seule chose est que j'utiliserai cette interface un peu loin (c'est-à-dire pour vérifier si les params sur les différentes méthodes sont NULL et si oui lancer des exceptions) –

Questions connexes