Java-Entwurfsmuster (design pattern): Prototype

Heute werfen wir einen Blick auf ein weiteres Entwurfsmuster (Java design patterns) aus der Kategorie der Muster zur Erstellung von Objekten (creational patterns) – Prototype. Lies mehr über Entwurfsmuster – eine Serie von Entwurfsmustern:

Was ist das Entwurfsmuster Prototype ?

Das Entwurfsmuster Prototype ist ein Software-Entwurfsmuster, das dazu dient, neue Objekte durch Kopieren eines vorhandenen Objekts zu erstellen.

Welches Problem löst das Entwurfsmuster Prototype ?

Es löst das Problem der Erstellung neuer Objekte mit minimaler Rechenzeit und minimalen Speicherkosten, indem es die wiederholte Erstellung von Objekten über den Konstruktor vermeidet. Stattdessen erstellen wir eine einzelne Beispielinstanz (Prototyp), die dann kopiert werden kann, wenn wir ein neues Objekt erstellen müssen. Dieses Entwurfsmuster ist nützlich, 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ützlich, um tiefe Kopien von Objekten zu erstellen, die komplexe Datenstrukturen enthalten.

Beispiel für die Implementierung des Entwurfsmusters Prototype in Java

Jetzt schauen wir uns an, wie man das Prototype-Muster in Java implementiert. Shape.java Die Klasse Shape stellt das Prototype-Muster dar, die das Interface Cloneable implementieren und die Methode clone() überschreiben muss.

package designpatterns;

public class Shape implements Cloneable {

    private String type;

    public Shape(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    @Override
    public Shape clone() throws CloneNotSupportedException {
        return (Shape) super.clone();
    }
}

Hier ist ein Beispiel für die Verwendung der Klasse Shape mit der Implementierung des Entwurfsmuster Prototype: Main.java 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ßend haben wir diese Instanz kopiert und das Objekt shape1 erstellt. Nach dem Ändern des Typs von shape1 haben wir den Prototyp erneut kopiert und das Objekt shape2 erstellt.

import designpatterns.Shape;

public class Main {
    public static void main(String[] args) {
        // Shape creation
        Shape prototype = new Shape("Circle");

        try {
            // Clone shape to create a new object
            Shape shape1 = prototype.clone();
            System.out.println("Object 1: " + shape1.getType());

            // Changing the type of new object
            shape1.setType("Square");
            System.out.println("Object 1 after type change: " + shape1.getType());

            // Creating another object by cloning the shape
            Shape shape2 = prototype.clone();
            System.out.println("Object 2: " + shape2.getType());
        } catch (CloneNotSupportedException e) {
            e.printStackTrace();
        }
    }
}

Die Ausgabe dieses Beispiels sollte wie folgt aussehen

Prototype Entwurfsmuster Programmausgabe
Ausgabe des Prototype-Beispiels
Wir haben die Dateien mit dem erwähnten Prototype-Code für dich vorbereitet, den du direkt in Java ausführen kannst. Lade den Code hier herunter.  

Über den Autor

Jozef Wagner

Java Developer Senior

Viac ako 10 rokov programujem v Jave, momentálne pracujem v msg life Slovakia ako Java programátor senior a pomáham zákazníkom implementovať ich požiadavky do poistného softvéru Life Factory. Vo voľnom čase si rád oddýchnem v lese, prípadne si zahrám nejakú dobrú počítačovú hru.

Informieren Sie uns über sich