Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Panel
titleColorwhite
titleBGColor#205081
titleInhalt

Table of Contents



Panel
titleColorwhite
titleBGColor#205081
titleVerweise

https://projectlombok.org/

Status
colourRed
titleStatus

 Einleitung

Aus Wikipedia:

Panel
titlehttps://de.wikipedia.org/wiki/Erbauer_(Entwurfsmuster)

Der Erbauer (englisch builder) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung. Es gehört zur Kategorie der Erzeugungsmuster (englisch creational patterns) und trennt die Konstruktion komplexer Objekte von deren Repräsentationen, wodurch dieselben Konstruktionsprozesse wiederverwendet werden können.[1] Das Muster ist eines der sogenannten GoF-Muster (Gang of Four, siehe Viererbande).

Beispiel

Code Block
languagejava
public final class Product {

    private final String code;
    private final String name;

    public static Product.ProductBuilder builder() {
        return new Product.ProductBuilder();
    }

    public static class ProductBuilder {
        private String code;
        private String name;

        ProductBuilder() {
        }

        public Product.ProductBuilder code(final String code) {
            this.code = code;
            return this;
        }

        public Product.ProductBuilder name(final String name) {
            this.name = name;
            return this;
        }

        public Product build() {
            return new Product(this.code, this.name);
        }

    }
}

Über Lombock können diese Builder automatisch in den Code gewebt werden. 

Code Block
languagejava
public class ProductTest {

    @Test
    public void builder() {

        Product product = Product.builder()
                .code("123456")
                .name("Mannes Kamera")
                .build();

        assertThat(product.getCode(), is("123456"));
        assertThat(product.getName(), is("Mannes Kamera"));

    }
}


@Builder
@Data
public class Product {

    private String code;
    private String name;
}