2010-05-28 5 views
8

Je sais que c'est le modèle Builder, mais c'est une forme modifiée. Alors que l'article de Wikipedia sur le modèle Builder donne l'exemple:Existe-t-il un terme spécifique pour le modèle Builder dans lequel chaque méthode renvoie `this`?

pizzaBuilder.createNewPizzaProduct(); 
pizzaBuilder.buildDough(); 
pizzaBuilder.buildSauce(); 
pizzaBuilder.buildTopping(); 
Pizza p = pizzaBuilder.getPizza(); 

Y at-il un nom spécifique pour le motif de Builder modifié qui ressemble à:

Pizza p = pizzaBuilder.createNewPizzaProduct().buildDough().buildSauce().buildTopping(); 

Ceci est mieux vu dans la Bibliothèque jQuery, où vous pouvez faire quelque chose comme:

$('li.item-a').parent().css('background-color', 'red'); 

Où chaque méthode, y compris l'initiale $(), renvoie un objet jQuery qui représente généralement un ensemble d'éléments de page, et chaque méthode opère sur cet ensemble d'une manière ou d'une autre.

Répondre

8

J'ai vu cela appelé un Fluent Builder plusieurs endroits.

Cela a beaucoup de sens, car il s'agit essentiellement d'une combinaison d'un motif de conception Fluent Interface et Builder.

+0

C'est un nom parfait (il communique exactement ce que c'est) +1 –

+0

Je suis d'accord, cela sonne comme le nom parfait. Non seulement cela, mais je n'avais jamais entendu parler du terme "Interface Fluent" auparavant, donc je vais aller en lire plus sur d'autres techniques fluentes! – Ricket

3

Il peut être appelé Fluent interface:

En génie logiciel, une interface fluide (comme inventé par Eric Evans et Martin Fowler) est une façon de mettre en œuvre une API orientée objet d'une manière qui vise à fournir un code plus lisible.

Une interface fluide est normalement mis en oeuvre en utilisant le chainage des méthodes pour relayer le contexte d'instruction d'un appel ultérieur (mais une interface fluide implique plus qu'un simple enchaînement de méthode)

3

Je qualifierais la technique « Enchaînement méthode » .

(à peu près conformément aux wikipedia ...)

Et oui, Enchaînement méthode peut être utilisée pour créer des interfaces couramment.

Questions connexes