Lezers zoals jij steunen MUO. Wanneer u een aankoop doet via links op onze site, kunnen we een aangesloten commissie verdienen. Lees verder.

Het Builder-ontwerppatroon vat de eigenschappen van een object samen en stelt u in staat er een weergave van te maken. Met dit patroon kunt u complexe objecten construeren, met verschillende eigenschappen, ook al behoren ze tot dezelfde klasse.

Een typische objectklasse bevat attributen, constructors en methoden. Met het bouwpatroon kunt u de constructielogica uit de objectklasse extraheren en in klassen die bouwers worden genoemd, plaatsen. U kunt deze bouwklassen vervolgens gebruiken om verschillende varianten van hetzelfde object te maken.

Implementatie van het Builder-patroon in Java

Een goed voorbeeld van het builder-patroon is een pizza-bestelsysteem waarmee klanten verschillende topping-opties kunnen selecteren.

De productklasse

Een benadering is om van de bouwer een interface te maken, maar u moet eerst een productklasse maken. Het product in deze voorbeeldtoepassing is een pizza.

instagram viewer
openbaarklasPizza{
// eigenschappen
privaatint bestellingsnummer;
privaat Snaar pizza deeg;
privaat Snaar topping;

// getters en setters
openbaarintbestelnummer(){
opbrengst bestellingsnummer;
}

openbaarleegtebestelnummer instellen(int bestellingsnummer){
dit.bestelnummer = bestelnummer;
}

openbaar Snaar haalPizzaDough(){
opbrengst pizza deeg;
}

openbaarleegtesetPizzaDough(SnaarpizzaDeeg){
dit.pizzadeeg = pizzadeeg;
}

openbaar Snaar getTopping(){
opbrengst topping;
}

openbaarleegtesetTopping(Snaar topping){
dit.topping = topping;
}
}

De bouwklasse

De pizza Java-klasse heeft drie eigenschappen en hun respectievelijke getters en setters, maar die zijn er niet constructor methoden. Met de builder-interface kunt u elk aspect van het pizza-object afzonderlijk maken. Hiermee kunt u het hele pizza-object ophalen.

openbaarkoppelBouwer{
openbaarleegtecreatePizzaDough();
openbaarleegtecreateTopping();
openbaar Pizza krijgPizza();
}

Met de voorbeeldpizza-applicatie kunnen klanten alle toppings bestellen, zoals kaas, pepperoni, ui of verschillende combinaties. Daarom is een pizza die een klant bestelt kaas.

openbaarklasKaasPizzaBuilderimplementeertBouwer{
privaat Pizza pizza;

openbaarKaasPizzaBuilder(){
dit.pizza = nieuw Pizza();
}

@Overschrijven
openbaarleegtecreatePizzaDough(){
dit.pizza.setPizzaDough("Deeg");
}

@Overschrijven
openbaarleegtecreateTopping(){
dit.pizza.setTopping("Kaas");
}

@Overschrijven
openbaar Pizza krijgPizza(){
opbrengstdit.pizza;
}
}

De klasse CheesePizzaBuilder implementeert de Builder-interface en gebruikt deze om een ​​nieuwe kaaspizza te maken. Dit is een weergave van het Pizza-object. Het doet dit ook op een manier die onafhankelijk is van de Pizza-klasse.

De klasse CheesePizzaBuilder weet niet veel over de klasse Pizza, hij weet alleen wat hij moet weten om zijn functie te voltooien. Het weet dat de klasse Pizza een deeg- en een topping-eigenschap heeft en stelt deze eigenschappen in op twee specifieke waarden die elke kaaspizza zal hebben. Elke keer dat de toepassing de klasse CheesePizzaBuilder aanroept, wordt er nu een nieuwe pizza gemaakt met een topping van kaas.

De regisseursklasse

De director-klasse is een cruciaal aspect van het builder-patroon. Het enige doel van een concrete builderklasse is het maken van een specifiek object. Het bereikt dit door de verschillende delen van een object afzonderlijk te creëren.

De betonklassen van de bouwer zijn echter niet op de hoogte van het algoritme. Geen van de bouwklassen weet het deeg te bouwen voordat de topping wordt toegevoegd. Dit is de functie van de regisseursklasse.

openbaarklasRegisseur{
privaat Bouwer pizzaBouwer;

openbaarRegisseur(Builder pizzabouwer){
dit.pizzaBuilder = pizzaBuilder;
}

openbaar Pizza krijgPizza(){
opbrengstdit.pizzaBuilder.getPizza();
}

openbaarleegtemaakPizza(){
dit.pizzabouwer.creëerPizzaDough();
dit.pizzabouwer.creëerTopping();
}
}

De klasse Director gebruikt de builder-interface om pizza's te maken. Het is de bewaarder van het algoritme.

De voordelen van het gebruik van het Builder-ontwerppatroon

Het grote voordeel van het gebruik van het ontwerppatroon van de bouwer is de inkapselingseigenschap. Dit is een cruciaal aspect van software-engineering, omdat het helpt bij de ontwikkeling van veilige applicaties.

Een ander voordeel van dit ontwerppatroon is de objectconstructiebenadering. Hiermee kunt u processen met meerdere stappen maken, waarbij elke stap onafhankelijk is, wat het debuggen eenvoudiger maakt.