{"id":4376,"date":"2023-08-11T16:05:37","date_gmt":"2023-08-11T16:05:37","guid":{"rendered":"https:\/\/msgprogramator.sk\/?p=4376"},"modified":"2025-07-07T11:36:35","modified_gmt":"2025-07-07T11:36:35","slug":"java-prototype","status":"publish","type":"post","link":"https:\/\/msgprogramator.sk\/de\/java-prototype\/","title":{"rendered":"Java-Entwurfsmuster (design pattern): Prototype"},"content":{"rendered":"<p>Heute werfen wir einen Blick auf ein weiteres <strong>Entwurfsmuster<\/strong> (<strong>Java design patterns<\/strong>) aus der Kategorie der Muster zur Erstellung von Objekten <strong>(creational patterns<\/strong>) &#8211; Prototype. Lies mehr \u00fcber Entwurfsmuster &#8211; eine Serie von Entwurfsmustern: <\/p>\n<ul>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-builder\/\">Entwurfsmuster Builder<\/a><\/li>\n<li><a href=\"https:\/\/msgprogramator.sk\/de\/java-singleton\/\">Entwurfsmuster Singleton<\/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 Prototype ?<\/h2>\n<p>Das <em>Entwurfsmuster<\/em> <strong>Prototype<\/strong> ist ein Software-Entwurfsmuster, das dazu dient, neue Objekte durch Kopieren eines vorhandenen Objekts zu erstellen. <\/p>\n<h2>Welches Problem l\u00f6st das Entwurfsmuster Prototype ?<\/h2>\n<p> Es l\u00f6st das Problem der Erstellung neuer Objekte mit minimaler Rechenzeit und minimalen Speicherkosten, indem es die wiederholte Erstellung von Objekten \u00fcber den Konstruktor vermeidet. Stattdessen erstellen wir eine einzelne Beispielinstanz (Prototyp), die dann kopiert werden kann, wenn wir ein neues Objekt erstellen m\u00fcssen. Dieses Entwurfsmuster ist n\u00fctzlich, wenn die Erstellung eines Objekts schwierig ist oder wenn es nicht ausreicht, einfach den Konstruktor aufzurufen, um neue Instanzen eines Objekts zu erhalten. Es ist auch n\u00fctzlich, um tiefe Kopien von Objekten zu erstellen, die komplexe Datenstrukturen enthalten. <\/p>\n<h2>Beispiel f\u00fcr die Implementierung des Entwurfsmusters Prototype in Java<\/h2>\n<p> Jetzt schauen wir uns an, wie man das Prototype-Muster in Java implementiert. <strong><u>Shape.java<\/u><\/strong> Die Klasse Shape stellt das Prototype-Muster dar, die das Interface <em>Cloneable <\/em> implementieren und die Methode <em>clone()<\/em> \u00fcberschreiben muss. <\/p>\n<pre><code class=\"language-java\" data-line=\"\">package designpatterns;\n\npublic class Shape implements Cloneable {\n\n    private String type;\n\n    public Shape(String type) {\n        this.type = type;\n    }\n\n    public String getType() {\n        return type;\n    }\n\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    @Override\n    public Shape clone() throws CloneNotSupportedException {\n        return (Shape) super.clone();\n    }\n}<\/code><\/pre>\n<p> Hier ist ein Beispiel f\u00fcr die Verwendung der Klasse Shape mit der Implementierung des Entwurfsmuster Prototype: <strong><u>Main.java<\/u><\/strong> In diesem Beispiel haben wir die Klasse Shape erstellt, die den Prototyp eines Objekts darstellt. In der main-Methode haben wir zuerst eine Prototypinstanz Prototype vom Typ Circle erstellt. Anschlie\u00dfend haben wir diese Instanz kopiert und das Objekt shape1 erstellt. Nach dem \u00c4ndern des Typs von shape1 haben wir den Prototyp erneut kopiert und das Objekt shape2 erstellt.<\/p>\n<pre><code class=\"language-java\" data-line=\"\">import designpatterns.Shape;\n\npublic class Main {\n    public static void main(String[] args) {\n        \/\/ Shape creation\n        Shape prototype = new Shape(&quot;Circle&quot;);\n\n        try {\n            \/\/ Clone shape to create a new object\n            Shape shape1 = prototype.clone();\n            System.out.println(&quot;Object 1: &quot; + shape1.getType());\n\n            \/\/ Changing the type of new object\n            shape1.setType(&quot;Square&quot;);\n            System.out.println(&quot;Object 1 after type change: &quot; + shape1.getType());\n\n            \/\/ Creating another object by cloning the shape\n            Shape shape2 = prototype.clone();\n            System.out.println(&quot;Object 2: &quot; + shape2.getType());\n        } catch (CloneNotSupportedException e) {\n            e.printStackTrace();\n        }\n    }\n}<\/code><\/pre>\n<p> Die Ausgabe dieses Beispiels sollte wie folgt aussehen <figure id=\"attachment_4386\" aria-describedby=\"caption-attachment-4386\" style=\"width: 525px\" class=\"wp-caption aligncenter\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-4384\" src=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/prototype-design-pattern-eng.webp\" alt=\"Prototype Entwurfsmuster Programmausgabe\" width=\"525\" height=\"256\" srcset=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/prototype-design-pattern-eng.webp 641w, https:\/\/msgprogramator.sk\/wp-content\/uploads\/2023\/08\/prototype-design-pattern-eng-300x146.webp 300w\" sizes=\"auto, (max-width: 525px) 100vw, 525px\" \/><figcaption id=\"caption-attachment-4386\" class=\"wp-caption-text\">Ausgabe des Prototype-Beispiels<\/figcaption><\/figure> Wir haben die Dateien mit dem erw\u00e4hnten Prototype-Code f\u00fcr dich vorbereitet, den du direkt in Java ausf\u00fchren kannst. <a href=\"https:\/\/msgprogramator.sk\/wp-content\/uploads\/2024\/09\/Prototype_Eng.zip\">Lade den Code hier herunter.<\/a>    &nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Was ist das Prototype -Designmuster und wof\u00fcr wird es verwendet? Lies unseren neuen Artikel.<\/p>\n","protected":false},"author":14,"featured_media":4377,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[62],"tags":[],"class_list":["post-4376","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\/4376","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=4376"}],"version-history":[{"count":3,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4376\/revisions"}],"predecessor-version":[{"id":4448,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/posts\/4376\/revisions\/4448"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media\/4377"}],"wp:attachment":[{"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/media?parent=4376"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/categories?post=4376"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/msgprogramator.sk\/de\/wp-json\/wp\/v2\/tags?post=4376"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}