Prototyp-Entwurfsmuster in Java

Der Prototyp-Entwurfsmuster ist ein Entwurfsmuster der Erzeugungsmuster und stellt daher einen Mechanismus zur Objekterzeugung bereit.

Prototyp-Entwurfsmuster

Das Prototyp-Entwurfsmuster wird verwendet, wenn die Objekterzeugung aufwendig ist und viel Zeit und Ressourcen erfordert und bereits ein ähnliches Objekt vorhanden ist. Das Prototypmuster bietet einen Mechanismus, um das Originalobjekt in ein neues Objekt zu kopieren und es dann entsprechend unseren Bedürfnissen zu ändern. Das Prototyp-Entwurfsmuster verwendet das Klonen in Java, um das Objekt zu kopieren.

Beispiel für das Prototyp-Entwurfsmuster

Es wäre einfach, das Prototyp-Entwurfsmuster anhand eines Beispiels zu verstehen. Angenommen, wir haben ein Objekt, das Daten aus der Datenbank lädt. Jetzt müssen wir diese Daten mehrmals in unserem Programm ändern, daher ist es keine gute Idee, das Objekt mit dem new-Schlüsselwort zu erstellen und alle Daten erneut aus der Datenbank zu laden. Der bessere Ansatz wäre, das vorhandene Objekt in ein neues Objekt zu klonen und dann die Datenmanipulation durchzuführen. Das Prototyp-Entwurfsmuster schreibt vor, dass das Objekt, das Sie kopieren, die Kopierfunktion bereitstellen sollte. Dies sollte nicht von einer anderen Klasse durchgeführt werden. Ob jedoch eine oberflächliche oder tiefe Kopie der Objekteigenschaften verwendet werden soll, hängt von den Anforderungen ab und ist eine Designentscheidung. Hier ist ein Beispielprogramm, das das Prototyp-Entwurfsmuster in Java zeigt. Employees.java

package com.journaldev.design.prototype;

import java.util.ArrayList;
import java.util.List;

public class Employees implements Cloneable{

	private List empList;
	
	public Employees(){
		empList = new ArrayList();
	}
	
	public Employees(List list){
		this.empList=list;
	}
	public void loadData(){
		// alle Mitarbeiter aus der Datenbank lesen und in die Liste einfügen
		empList.add("Pankaj");
		empList.add("Raj");
		empList.add("David");
		empList.add("Lisa");
	}
	
	public List getEmpList() {
		return empList;
	}

	@Override
	public Object clone() throws CloneNotSupportedException{
			List temp = new ArrayList();
			for(String s : this.getEmpList()){
				temp.add(s);
			}
			return new Employees(temp);
	}
	
}

Beachten Sie, dass die clone-Methode überschrieben ist, um eine tiefe Kopie der Mitarbeiterliste bereitzustellen. Hier ist das Testprogramm für das Prototyp-Entwurfsmusterbeispiel, das den Nutzen des Prototypmusters zeigt. PrototypePatternTest.java

package com.journaldev.design.test;

import java.util.List;

import com.journaldev.design.prototype.Employees;

public class PrototypePatternTest {

	public static void main(String[] args) throws CloneNotSupportedException {
		Employees emps = new Employees();
		emps.loadData();
		
		// Verwenden Sie die clone-Methode, um das Employee-Objekt zu erhalten
		Employees empsNew = (Employees) emps.clone();
		Employees empsNew1 = (Employees) emps.clone();
		List list = empsNew.getEmpList();
		list.add("John");
		List list1 = empsNew1.getEmpList();
		list1.remove("Pankaj");
		
		System.out.println("emps List: "+emps.getEmpList());
		System.out.println("empsNew List: "+list);
		System.out.println("empsNew1 List: "+list1);
	}

}

Die Ausgabe des obigen Beispiels für das Prototyp-Entwurfsmuster lautet:

emps List: [Pankaj, Raj, David, Lisa]
empsNew List: [Pankaj, Raj, David, Lisa, John]
empsNew1 List: [Raj, David, Lisa]

Wenn das Klonen des Objekts nicht bereitgestellt worden wäre, müssten wir jedes Mal einen Datenbankaufruf durchführen, um die Liste der Mitarbeiter abzurufen. Dann müssten wir die Manipulationen durchführen, was ressourcen- und zeitaufwendig gewesen wäre. Das ist alles zum Prototyp-Entwurfsmuster in Java.

Source:
https://www.digitalocean.com/community/tutorials/prototype-design-pattern-in-java