L'idée de base de la construction d'une interface fluide est l'une des raisons de lisibilité - quelqu'un de lire le code doit être en mesure de comprendre ce qui est en train d'être réalisé sans avoir à creuser dans la mise en œuvre de préciser les détails.
Moderne OO langages tels que C#, VB.NET et Java, le chaînage de méthode est une façon que cet objectif est atteint, mais ce n'est pas la seule technique - les deux autres sont classes usine et les paramètres nommés.
Notez également que ces techniques ne sont pas mutuellement exclusives, l'objectif est de maximiser readabilty du code, pas la pureté de l'approche.
Le Chaînage De Méthode
L'idée clé derrière le chaînage de méthode est de ne jamais avoir une méthode qui retourne void, mais toujours revenir à l'objet, ou plus souvent, une interface, qui permet en outre de passer des appels.
Vous n'avez pas besoin de renvoyer nécessairement le même objet sur lequel la méthode a été appelé - qui est, vous n'avez pas toujours besoin de "retour cette;".
Il est utile de conception technique est de créer un intérieur de classe - j'ai toujours suffixe ces avec "Expression" - qui expose l'API fluent, permettant la configuration d'une autre classe.
Cela a deux avantages: il garde l'API fluent dans un endroit isolé de la fonctionnalité principale de la classe, et (parce que c'est un intérieur de classe) on peut bricoler avec les entrailles de la classe principale de moyens que les autres classes ne peuvent pas.
Vous souhaiterez peut-être utiliser une série d'interfaces, de contrôler les méthodes qui sont à la disposition des développeurs à un moment donné dans le temps.
Classes Usine
Parfois, vous voulez construire une série d'objets - les exemples incluent la NHibernate Critères de l'API, de Rhinocéros.On se moque de l'attente des contraintes et NUnit 2.4 nouveau de la syntaxe.
Dans ces deux cas, vous avez des objets réels que vous stockez, mais pour les rendre plus faciles à créer il y a des classes de fabrique de fournir des méthodes statiques pour la fabrication les instances que vous avez besoin.
Par exemple, dans NUnit 2.4 vous pouvez écrire:
Assert.That( result, Is.EqualTo(4));
Le "Est" de la classe est une classe statique complète de l'usine de méthodes qui créent des contraintes pour l'évaluation par NUnit.
En fait, pour permettre des erreurs d'arrondi et d'autres imprécision de nombres en virgule flottante, vous pouvez spécifier une précision pour le test:
Assert.That( result, Is.EqualTo(4.0).Within(0.01));
(L'avance des excuses - ma syntaxe est peut-être éteint.)
Les Paramètres Nommés
Dans les langues qui les prennent en charge (y compris Smalltalk et C# 4.0) paramètres nommés fournir un moyen pour inclure d'autres "syntaxe" dans un appel de méthode, l'amélioration de la lisibilité.
Envisager un hypothétique méthode Save() qui prend un nom de fichier, et d'appliquer les autorisations pour le fichier après l'enregistrement:
myDocument.Save("sampleFile.txt", FilePermissions.ReadOnly);
avec des paramètres nommés, cette méthode pourrait ressembler à ceci:
myDocument.Save(file:"SampleFile.txt", permissions:FilePermissions.ReadOnly);
ou, plus couramment:
myDocument.Save(toFile:"SampleFile.txt", withPermissions:FilePermissions.ReadOnly);