{"id":3571,"date":"2023-08-04T16:05:19","date_gmt":"2023-08-04T16:05:19","guid":{"rendered":"https:\/\/msgprogramator.sk\/?p=3571"},"modified":"2025-07-07T11:36:27","modified_gmt":"2025-07-07T11:36:27","slug":"java-builder","status":"publish","type":"post","link":"https:\/\/msgprogramator.sk\/de\/java-builder\/","title":{"rendered":"Java Entwurfsmuster (design pattern): Builder"},"content":{"rendered":"<p>Heute werfen wir einen Blick auf ein weiteres<strong> Entwurfsmuster<\/strong> (Java design pattern) aus der Kategorie der Muster zur Erstellung von Objekten <strong>(Kreationsmuster<\/strong>) &#8211; Builder. Lies mehr \u00fcber Entwurfsmuster &#8211; eine Serie von Entwurfsmustern: <\/p>\n<ul>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-singleton\/\">Entwurfsmuster Singleton<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-prototype\/\">Entwurfsmuster Prototyp<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-factory\/\">Entwurfsmuster Factory<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-abstract-factory\/\">Entwurfsmuster Abstract Factory<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-adapter\/\">Entwurfsmuster Adapter<\/a><\/li>\n<\/ul>\n<h2>Was ist das Entwurfsmuster Builder?<\/h2>\n<p> Das Entwurfsmuster <strong>Builder<\/strong> ist ein Software-Entwurfsmuster, das dazu dient, die Konstruktion komplexer Objekte zu vereinfachen, indem es in eine Reihe von Schritten aufgeteilt wird. <\/p>\n<h2>Welches Problem wird durch das Entwurfsmuster Builder gel\u00f6st?<\/h2>\n<p> Es l\u00f6st das Problem der Erstellung von Objekten mit einer gro\u00dfen Anzahl von Parametern oder optionalen Eigenschaften. Anstatt Konstruktoren mit einer langen Parameterliste zu haben, erm\u00f6glicht uns das Builder-Muster, Objekte mithilfe \u00fcbersichtlicher Schritte zu erstellen. Das Entwurfsmuster Builder funktioniert so, dass wir eine separate Klasse namens Builder haben, die f\u00fcr die schrittweise Erstellung eines Objekts verantwortlich ist. Diese Klasse bietet Methoden zum Einstellen einzelner Objekteigenschaften. Wenn schlie\u00dflich alle Eigenschaften festgelegt sind, k\u00f6nnen wir die build()-Methode verwenden, um das Objekt selbst zu erstellen. <\/p>\n<h2>Beispiel Builder Implementierung in Java<\/h2>\n<p> Jetzt schauen wir uns an, wie man das Entwurfsmuster Builder in Java implementiert. <strong><u>Product.java<\/u><\/strong> In diesem Beispiel haben wir die Klasse Product erstellt, die ein Produkt repr\u00e4sentiert. Die Klasse Product hat einen privaten Konstruktor und eine eingebettete Klasse Builder, die schrittweise die Eigenschaften des Objekts festlegt. Mit den Methoden setTitle, setDescription und setPrice k\u00f6nnen wir die einzelnen Eigenschaften festlegen. Schlie\u00dflich rufen wir die Methode build() auf, die ein Objekt vom Typ Product erstellt. Danach k\u00f6nnen wir das erstellte Objekt verwenden und seine Eigenschaften abrufen. <\/p>\n<pre><code class=\"language-java\" data-line=\"\">package designpatterns;\n\npublic class Product {\n    private String title;\n    private String description;\n    private double price;\n\n    \/\/ Private constructor to prevent instantiation of the object\n    private Product(Builder builder) {\n        this.title = builder.title;\n        this.description = builder.description;\n        this.price = builder.price;\n    }\n\n    \/\/ Getters for object attributes (title, description, price)\n    public String getTitle() {\n        return title;\n    }\n\n    public String getDescription() {\n        return description;\n    }\n\n    public double getPrice() {\n        return price;\n    }\n\n    \/\/ Design Pattern Builder\n    public static class Builder {\n        private String title;\n        private String description;\n        private double price;\n\n        public Builder() {\n            \/\/ Default values, or we can omit the constructor and initialize values in setters\n            this.title = &quot;&quot;;\n            this.description = &quot;&quot;;\n            this.price = 0.0;\n        }\n\n        public Builder setTitle(String title) {\n            this.title = title;\n            return this;\n        }\n\n        public Builder setDescription(String description) {\n            this.description = description;\n            return this;\n        }\n\n        public Builder setPrice(double price) {\n            this.price = price;\n            return this;\n        }\n\n        public Product build() {\n            return new Product(this);\n        }\n    }\n}<\/code><\/pre>\n<p> Hier ist ein Beispiel f\u00fcr die Verwendung der Klasse Product mit der Implementierung des Designmusters Builder: <strong><u>Main.java<\/u><\/strong> In diesem Beispiel haben wir das Builder-Muster verwendet, um ein Objekt vom Typ Product zu erstellen, aber dieses Muster ist f\u00fcr jedes Objekt geeignet, dessen Eigenschaften komplizierter gesetzt werden m\u00fcssen. <\/p>\n<pre><code class=\"language-java\" data-line=\"\">import designpatterns.Product;\n\n\/\/ Example\npublic class Main {\n    public static void main(String[] args) {\n        Product produkt = new Product.Builder()\n                .setTitle(&quot;Japanese tea Gyokuro&quot;)\n                .setDescription(&quot;Quality shaded Japanese green tea&quot;)\n                .setPrice(29.99)\n                .build();\n        \n        System.out.println(&quot;Title: &quot; + produkt.getTitle());\n        System.out.println(&quot;Description: &quot; + produkt.getDescription());\n        System.out.println(&quot;Price: &quot; + produkt.getPrice());\n    }\n}<\/code><\/pre>\n<p><strong>Ausgabe des Beispiels<\/strong>    <\/p>\n<p><figure id=\"attachment_4404\" aria-describedby=\"caption-attachment-4404\" style=\"width: 525px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-4402\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/builder-design-pattern-output-eng.webp\" alt=\"builder design pattern program output\" width=\"525\" height=\"193\" srcset=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/builder-design-pattern-output-eng.webp 525w, https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/builder-design-pattern-output-eng-300x110.webp 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-4404\" class=\"wp-caption-text\">Beispiel Builder-Ausgabe<\/figcaption><\/figure> Wir haben die Dateien mit dem oben genannten Java Builder-Beispiel in Form von Code vorbereitet, den du direkt in Java ausf\u00fchren kannst. <a href=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/09\/Builder_Eng.zip\" target=\"_blank\" rel=\"noopener\">Lade den Code hier herunter.<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Schau dir das Entwurfsmuster Builder aus der Kategorie der Erzeugungsmuster (creational patterns) an.<\/p>\n","protected":false},"author":14,"featured_media":3574,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[62],"tags":[],"class_list":["post-3571","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-java"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3571","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/comments?post=3571"}],"version-history":[{"count":2,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3571\/revisions"}],"predecessor-version":[{"id":4447,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/3571\/revisions\/4447"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media\/3574"}],"wp:attachment":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media?parent=3571"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/categories?post=3571"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/tags?post=3571"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}