Technischer Projektleiter
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:
- Entwurfsmuster Builder
- Entwurfsmuster Singleton
- Entwurfsmuster Factory
- Entwurfsmuster Abstract Factory
- Entwurfsmuster Adapter
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 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.