Qu’est-ce que le modèle de conception de générateur ?

Qu’est-ce que le modèle de conception de générateur ?

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.

public class Pizza {
    // properties
    private int orderNumber;
    private String pizzaDough;
    private String topping;

    // getters and setters
    public int getOrderNumber() {
        return orderNumber;
    }

    public void setOrderNumber(int orderNumber) {
        this.orderNumber = orderNumber;
    }

    public String getPizzaDough() {
        return pizzaDough;
    }

    public void setPizzaDough(String pizzaDough) {
        this.pizzaDough = pizzaDough;
    }

    public String getTopping() {
        return topping;
    }

    public void setTopping(String topping) {
        this.topping = topping;
    }
}

La classe constructeur

La classe Pizza Java a trois propriétés et leurs getters et setters respectifs, mais il n’y a pas de méthodes de 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.

public interface Builder {
    public void createPizzaDough();
    public void createTopping();
    public Pizza getPizza();
}

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.

public class CheesePizzaBuilder implements Builder {
    private Pizza pizza;

    public CheesePizzaBuilder() {
        this.pizza = new Pizza();
    }

    @Override
    public void createPizzaDough() {
        this.pizza.setPizzaDough("Dough");
    }

    @Override
    public void createTopping() {
        this.pizza.setTopping("Cheese");
    }

    @Override
    public Pizza getPizza() {
        return this.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.

public class Director {
    private Builder pizzaBuilder;

    public Director(Builder pizzaBuilder) {
        this.pizzaBuilder = pizzaBuilder;
    }

    public Pizza getPizza() {
        return this.pizzaBuilder.getPizza();
    }

    public void makePizza() {
        this.pizzaBuilder.createPizzaDough();
        this.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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *