Wzorzec projektowy Builder w Java

Wzorzec projektowy Builder służy do rozdzielenia konstrukcji złożonego obiektu od jego reprezentacji. Pozwala to na produkcję różnych typów obiektów, używając tego samego procesu konstrukcji. Jest szczególnie użyteczny, gdy obiekt musi być utworzony z wieloma opcjonalnymi elementami lub kiedy proces tworzenia obiektu jest bardzo złożony. Wzorzec Builder oddziela konstrukcję obiektu od jego klasy i pozwala na konstrukcję krok po kroku.

Przykład implementacji wzorca Builder

W tym przykładzie zbudujemy klasę Pizza, która będzie reprezentować pizzę z różnymi składnikami. Użyjemy wzorca Builder, aby umożliwić elastyczne tworzenie obiektów Pizza z różnymi kombinacjami składników.

Klasa Pizza
// Definicja klasy Pizza
public class Pizza {
    private String dough;
    private String sauce;
    private List<String> toppings;

    // Prywatny konstruktor
    private Pizza(PizzaBuilder builder) {
        this.dough = builder.dough;
        this.sauce = builder.sauce;
        this.toppings = builder.toppings;
    }

    // Getter dla ciasta
    public String getDough() {
        return dough;
    }

    // Getter dla sosu
    public String getSauce() {
        return sauce;
    }

    // Getter dla dodatków
    public List<String> getToppings() {
        return toppings;
    }

    // Statyczna klasa Builder
    public static class PizzaBuilder {
        private String dough = "";
        private String sauce = "";
        private List<String> toppings = new ArrayList<>();

        // Metoda ustawiająca ciasto
        public PizzaBuilder dough(String dough) {
            this.dough = dough;
            return this;
        }

        // Metoda ustawiająca sos
        public PizzaBuilder sauce(String sauce) {
            this.sauce = sauce;
            return this;
        }

        // Metoda dodająca dodatek
        public PizzaBuilder addTopping(String topping) {
            this.toppings.add(topping);
            return this;
        }

        // Metoda budująca obiekt Pizza
        public Pizza build() {
            return new Pizza(this);
        }
    }
}
Użycie wzorca Builder do stworzenia pizzy
public class PizzaOrderDemo {
    public static void main(String[] args) {
        Pizza pizza = new Pizza.PizzaBuilder()
                .dough("grube")
                .sauce("pomidorowy")
                .addTopping("ser")
                .addTopping("pieczarki")
                .build();

        System.out.println("Zamówiona pizza ma następujące składniki:");
        System.out.println("Ciasto: " + pizza.getDough());
        System.out.println("Sos: " + pizza.getSauce());
        System.out.println("Dodatki: " + pizza.getToppings());
    }
}

Podsumowanie

Wzorzec projektowy Builder jest niezwykle użytecznym narzędziem w przypadkach, gdy konstrukcja obiektu jest złożona lub gdy obiekt musi być stworzony z wieloma opcjonalnymi elementami. Poprzez oddzielenie procesu konstrukcji obiektu od jego reprezentacji, wzorzec Builder umożliwia tworzenie różnorodnych obiektów, używając tego samego kodu konstrukcyjnego. W przedstawionym przykładzie zastosowanie wzorca Builder pozwoliło na elastyczne tworzenie obiektów Pizza z różnymi kombinacjami składników, co ilustruje moc i elastyczność tego wzorca projektowego.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video Java w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

 

Scroll to Top