Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. En savoir plus.

Le modèle de conception Builder encapsule les propriétés d'un objet et vous permet d'en construire une représentation. Ce pattern permet de construire des objets complexes, avec des propriétés différentes même s'ils appartiennent à la même classe.

Une classe d'objets typique contient des attributs, des constructeurs et des méthodes. Le modèle de générateur vous permet d'extraire la logique de construction de la classe d'objets et de la placer dans des classes appelées générateurs. Vous pouvez ensuite utiliser ces classes de générateur pour créer différentes variantes du même objet.

Implémentation du modèle de construction en Java

Un bon exemple du modèle de constructeur est un système de commande de pizza qui permet aux clients de sélectionner différentes options de garniture.

La classe de produits

Une approche consiste à faire du constructeur une interface, mais vous devrez d'abord créer une classe de produit. Le produit dans cet exemple d'application est une pizza.

publicclassePizza{
// propriétés
privéentier numéro de commande;
privé Chaîne pâte à pizza;
privé Chaîne Garniture;

// getters et setters
publicentierobtenirNuméroCommande(){
retour numéro de commande;
}

publicannulersetOrderNumber(entier numéro de commande){
ce.orderNumber = orderNumber;
}

public Chaîne getPizzaPâte(){
retour pâte à pizza;
}

publicannulersetPizzaPâte(Pâte à pizza en ficelle){
ce.pizzaDough = pizzaDough;
}

public Chaîne getTopping(){
retour Garniture;
}

publicannulersetTopping(Garniture de cordes){
ce.topping = garniture ;
}
}

La classe constructeur

La pizza Classe Java a trois propriétés et leurs getters et setters respectifs, mais il n'y a pas méthodes constructeur. L'interface de construction vous permettra de créer chaque aspect de l'objet pizza séparément. Il vous permettra alors de récupérer l'intégralité de l'objet pizza.

publicinterfaceConstructeur{
publicannulercréerPizzaPâte();
publicannulercréerTopping();
public Pizza obtenirPizza();
}

L'exemple d'application de pizza permet aux clients de commander n'importe quelle garniture, comme du fromage, du pepperoni, de l'oignon ou différentes combinaisons. Par conséquent, une pizza qu'un client commandera est du fromage.

publicclasseFromagePizzaBuildermet en oeuvreConstructeur{
privé Pizza pizza;

publicFromagePizzaBuilder(){
ce.pizza = nouveau Pizza();
}

@Passer outre
publicannulercréerPizzaPâte(){
ce.pizza.setPizzaDough("Pâte");
}

@Passer outre
publicannulercréerTopping(){
ce.pizza.setTopping("Fromage");
}

@Passer outre
public Pizza obtenirPizza(){
retource.pizza;
}
}

La classe CheesePizzaBuilder implémente l'interface Builder et l'utilise pour créer une nouvelle pizza au fromage. Ceci est une représentation de l'objet Pizza. Il le fait également d'une manière indépendante de la classe Pizza.

La classe CheesePizzaBuilder ne sait pas grand-chose sur la classe Pizza, elle ne sait que ce qu'elle doit savoir pour remplir sa fonction. Il sait que la classe Pizza a une propriété de pâte et une propriété de garniture, et il définit ces propriétés sur deux valeurs spécifiques que chaque pizza au fromage aura. Désormais, chaque fois que l'application appelle la classe CheesePizzaBuilder, elle crée une nouvelle pizza avec une garniture au fromage.

La classe directeur

La classe directeur est un aspect crucial du modèle de construction. Le seul but d'une classe de constructeur concret est de créer un objet spécifique. Il y parvient en créant séparément les différentes parties d'un objet.

Cependant, les classes concrètes du constructeur ne connaissent pas l'algorithme. Aucune des classes de constructeurs ne sait construire la pâte avant d'ajouter la garniture. C'est la fonction de la classe directeur.

publicclasseDirecteur{
privé Constructeur de pizza Constructeur ;

publicDirecteur(Constructeur de pizzaConstructeur){
ce.pizzaBuilder = pizzaBuilder ;
}

public Pizza obtenirPizza(){
retource.pizzaBuilder.getPizza();
}

publicannulermarquePizza(){
ce.pizzaBuilder.createPizzaDough();
ce.pizzaBuilder.createTopping();
}
}

La classe Director utilise l'interface du constructeur pour créer des pizzas. C'est le gardien de l'algorithme.

Les avantages de l'utilisation du modèle de conception de générateur

Le principal avantage de l'utilisation du modèle de conception de générateur est sa propriété d'encapsulation. Il s'agit d'un aspect crucial du génie logiciel, car il aide au développement d'applications sécurisées.

Un autre avantage de ce modèle de conception est son approche de construction d'objets. Il vous permet de créer des processus en plusieurs étapes, où chaque étape est indépendante, ce qui facilite le débogage.