2009-06-03 3 views
6

Par exemple, (bien que ce ne soit pas une interface) la classe Stream dans .NET a une implémentation fournie par Stream.Null qui supprime simplement les données. PowerShell a Out-Null.Existe-t-il un modèle reconnu pour les objets inutiles qui implémentent une interface?

Dans les applications que j'ai développées, j'ai souvent trouvé utile d'implémenter une interface IFoo avec une implémentation par défaut NullFoo ou similaire quand il est préférable d'avoir une implémentation inutile plutôt que de ne pas passer d'objet.

Ma question est comment devrais-je me référer à cette pratique pour documenter ou expliquer une architecture? Existe-t-il un nom reconnu ou un modèle de conception GoF/Fowler pour cela?

Répondre

3

Apparemment, il a un nom, « NullObject », mais la question peut avoir une autre facette:

Dès le début de toute ma mise en œuvre du projet consiste soit sur les méthodes Stub ou lests données.

J'utilise le terme "Stub" en référence aux interfaces externes qui n'ont pas encore d'implémentation (mais qui vous donnent déjà un retour significatif, vous permettant de construire le projet dès le premier jour). J'utilise un "Sinker" se référant à une interface qui me permet d'y diriger des données, mais en réalité, il ne va nulle part ailleurs, et ce n'est pas la faute de l'expéditeur (donc il serait fastidieux de coder "ne pas envoyer "condition" dans cette portée). Doit atteindre une construction complète, ET ALORS, nous commençons le codage. Avec le temps, presque tous les talons deviennent fonctionnels (et certains traitent ou génèrent des données) et presque tous les plombs deviennent fonctionnels. A des revues de code, nous constatons que certains lests peuvent cesser d'exister, d'autres peuvent être regroupés, etc., etc.

1
  • L'objet semble être appelé Null Object, comme d'autres l'ont souligné
  • Si vous programmez Dans l'environnement .Net, vous pouvez suivre la convention Microsoft 'Empty' (comme dans String.Empty). Voir ce qui suit .Net BCL Examples Search
+0

Stream.Null vs Stream.Empty – dss539