Maison > Java > javaDidacticiel > Quand devriez-vous utiliser le modèle Builder pour la construction d'objets ?

Quand devriez-vous utiliser le modèle Builder pour la construction d'objets ?

Susan Sarandon
Libérer: 2024-12-28 03:52:09
original
543 Les gens l'ont consulté

When Should You Use the Builder Pattern for Object Construction?

Quand le modèle Builder est-il nécessaire ?

Le modèle Builder offre une approche flexible et structurée pour la construction d'objets complexes, en particulier lorsque leurs constructeurs peuvent ont une longue liste de paramètres.

Exemples de courants Applications :

  • Configuration du serveur : Création de serveurs avec des configurations spécifiques en activant ou en désactivant des modules.
  • Modèles HTML personnalisables : Concevoir des modèles HTML dynamiques avec des fonctionnalités facultatives telles que des menus de navigation ou des appels à l'action boutons.
  • Requêtes de base de données complexes : Création de requêtes SQL avec un paramétrage flexible pour le filtrage et le tri des données.

Avantages par rapport au modèle d'usine :

  • Données cohérentes et valides : Le constructeur garantit que tous les paramètres sont définis dans un ordre cohérent, minimisant ainsi le risque d'états d'objet non valides.
  • Immuabilité : Les modèles de générateur créent généralement des objets immuables, réduisant ainsi le risque d'incohérence des données.
  • Configuration chaînée : Les méthodes du générateur peuvent être chaînées, permettant une configuration et un code faciles lisibilité.
  • Personnalisable et extensible : L'ajout de nouveaux paramètres ou la modification de ceux existants est simple, minimisant ainsi le besoin de modifications de code.

Exemple d'implémentation dans Java :

public class Pizza {
    private int size;
    private boolean cheese;
    private boolean pepperoni;
    private boolean bacon;

    private Pizza(Builder builder) {
        this.size = builder.size;
        this.cheese = builder.cheese;
        this.pepperoni = builder.pepperoni;
        this.bacon = builder.bacon;
    }

    public static class Builder {
        // Required
        private final int size;

        // Optional
        private boolean cheese = false;
        private boolean pepperoni = false;
        private boolean bacon = false;

        public Builder(int size) {
            this.size = size;
        }

        public Builder cheese(boolean value) {
            this.cheese = value;
            return this;
        }

        public Builder pepperoni(boolean value) {
            this.pepperoni = value;
            return this;
        }

        public Builder bacon(boolean value) {
            this.bacon = value;
            return this;
        }

        public Pizza build() {
            return new Pizza(this);
        }
    }
}
Copier après la connexion

Ce constructeur permet une pizza flexible et cohérente configuration :

Pizza pizza = new Pizza.Builder(12)
                .cheese(true)
                .pepperoni(true)
                .bacon(false)
                .build();
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal