Wzorzec projektowy— BUILDER

tux, animal, nature-161507.jpg

Wzorzec projektowy Builder jest używany w celu konstrukcji złożonych obiektów krok po kroku. Pozwala na tworzenie różnych wariantów obiektu bez konieczności bezpośredniej manipulacji jego konstrukcją

Java
// Produkt, który chcemy zbudować
class Product {
    private String part1;
    private String part2;

    public void setPart1(String part1) {
        this.part1 = part1;
    }

    public void setPart2(String part2) {
        this.part2 = part2;
    }

    public void showInfo() {
        System.out.println("Part 1: " + part1);
        System.out.println("Part 2: " + part2);
    }
}

// Interfejs Buildera
interface Builder {
    void buildPart1(String part1);
    void buildPart2(String part2);
    Product getResult();
}

// Konkretna implementacja Buildera
class ConcreteBuilder implements Builder {
    private Product product = new Product();

    @Override
    public void buildPart1(String part1) {
        product.setPart1(part1);
    }

    @Override
    public void buildPart2(String part2) {
        product.setPart2(part2);
    }

    @Override
    public Product getResult() {
        return product;
    }
}

// Dyrektor, który nadzoruje proces budowy
class Director {
    private Builder builder;

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

    public void construct() {
        builder.buildPart1("A");
        builder.buildPart2("B");
    }
}

// Klient
public class Client {
    public static void main(String[] args) {
        // Utworzenie konkretnej implementacji Buildera
        Builder builder = new ConcreteBuilder();

        // Utworzenie dyrektora i przekazanie mu Buildera
        Director director = new Director(builder);

        // Proces budowy
        director.construct();

        // Uzyskanie gotowego produktu od Buildera
        Product product = builder.getResult();

        // Wyświetlenie informacji o produkcie
        product.showInfo();
    }
}

W tym przykładzie mamy klasę Product, która reprezentuje produkt, który chcemy zbudować. Interfejs Builder definiuje operacje budowania różnych części produktu, a klasa ConcreteBuilder implementuje ten interfejs, konstruując konkretny produkt.

Klasa Director nadzoruje proces budowy, korzystając z obiektu Builder do konstruowania produktu. Klient używa Director i Buildera do uzyskania gotowego produktu, który można następnie wykorzystać. Wzorzec Builder umożliwia elastyczne tworzenie różnych konfiguracji produktów bez konieczności modyfikacji klas produktu.

Scroll to Top