Vad är Builder Design Pattern?

Vad är Builder Design Pattern?
Läsare som du hjälper till att stödja MUO. När du gör ett köp med hjälp av länkar på vår webbplats kan vi tjäna en affiliate-provision. Läs mer.

Builders designmönster kapslar in egenskaperna hos ett objekt och låter dig konstruera en representation av det. Detta mönster låter dig konstruera komplexa objekt med olika egenskaper även om de tillhör samma klass.





En typisk objektklass innehåller attribut, konstruktorer och metoder. Builder-mönstret låter dig extrahera konstruktionslogiken från objektklassen och placera den i klasser som kallas byggare. Du kan sedan använda dessa byggarklasser för att skapa olika varianter av samma objekt.





Implementering av Builder-mönstret i Java

Ett bra exempel på byggmönstret är ett pizzabeställningssystem som låter kunderna välja olika påläggsalternativ.





Produktklassen

Ett tillvägagångssätt är att göra byggaren till ett gränssnitt, men du måste skapa en produktklass först. Produkten i denna exempelapplikation är en 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;
    }
}

Byggmästarklassen

Pizzan Java klass har tre fastigheter och deras respektive getters och setters, men det finns inga konstruktörsmetoder . Byggarens gränssnitt låter dig skapa varje aspekt av pizzaobjektet separat. Det låter dig sedan hämta hela pizzaobjektet.



hur man tar bort filer som används
 public interface Builder { 
    public void createPizzaDough();
    public void createTopping();
    public Pizza getPizza();
}

Exempelpizzaapplikationen låter kunder beställa valfri pålägg, såsom ost, pepperoni, lök eller olika kombinationer. Därför är en pizza som en kund kommer att beställa ost.

 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;
    }
}

Klassen CheesePizzaBuilder implementerar Builder-gränssnittet och använder det för att skapa en ny ostpizza. Detta är en representation av Pizza-objektet. Det gör den också på ett sätt som är oberoende av pizzaklassen.





CheesePizzaBuilder-klassen vet inte mycket om Pizza-klassen, den vet bara vad den behöver veta för att slutföra sin funktion. Den vet att pizzaklassen har en deg- och en toppingsegenskap, och den sätter dessa egenskaper till två specifika värden som varje ostpizza kommer att ha. Nu varje gång applikationen anropar CheesePizzaBuilder-klassen kommer den att skapa en ny Pizza som har ostpålägg.

Direktörsklassen

Regissörsklassen är en avgörande aspekt av byggmästarmönstret. Det enda syftet med en betongbyggarklass är att skapa ett specifikt objekt. Den uppnår detta genom att skapa de olika delarna av ett objekt separat.





Byggbetongklasserna är dock omedvetna om algoritmen. Ingen av byggarklasserna vet hur man bygger degen innan man lägger på toppingen. Detta är regissörsklassens funktion.

bästa gratis e -postapp för Windows 10
 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();
    }
}

Klassen Director använder byggargränssnittet för att göra pizzor. Det är algoritmens ägare.

Fördelarna med att använda Builder Design Pattern

Den största fördelen med att använda designmönstret är dess inkapslingsegenskaper. Detta är en avgörande aspekt av mjukvaruutveckling, eftersom det hjälper till vid utvecklingen av säkra applikationer.

En annan fördel med detta designmönster är dess tillvägagångssätt för objektkonstruktion. Det låter dig skapa flerstegsprocesser, där varje steg är oberoende, vilket gör felsökningen enklare.