Le modèle de conception de prototype est l’un des modèles de conception de création, il fournit donc un mécanisme de création d’objets.
Modèle de conception de prototype
Le modèle de conception de prototype est utilisé lorsque la création d’objets est coûteuse et nécessite beaucoup de temps et de ressources, et que vous avez déjà un objet similaire existant. Le modèle de prototype fournit un mécanisme pour copier l’objet d’origine vers un nouvel objet, puis le modifier selon nos besoins. Le modèle de conception de prototype utilise le clonage en Java pour copier l’objet.
Exemple de modèle de conception de prototype
Il serait facile de comprendre le modèle de conception de prototype avec un exemple. Supposons que nous ayons un objet qui charge des données à partir d’une base de données. Maintenant, nous devons modifier ces données plusieurs fois dans notre programme, donc ce n’est pas une bonne idée de créer l’objet en utilisant le mot-clé new
et de charger à nouveau toutes les données à partir de la base de données. L’approche préférable serait de cloner l’objet existant dans un nouvel objet, puis de manipuler les données. Le modèle de conception de prototype exige que l’objet que vous copiez fournisse la fonction de copie. Il ne doit pas être effectué par une autre classe. Cependant, l’utilisation d’une copie superficielle ou profonde des propriétés de l’objet dépend des exigences et c’est une décision de conception. Voici un exemple de programme montrant un exemple de modèle de conception de prototype en Java. 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(){
// lire tous les employés de la base de données et les mettre dans la liste
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);
}
}
Remarquez que la méthode clone
est remplacée pour fournir une copie profonde de la liste des employés. Voici le programme de test d’exemple du modèle de conception de prototype qui montrera les avantages du modèle de prototype. 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();
// Utiliser la méthode clone pour obtenir l'objet Employee
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);
}
}
La sortie du programme d’exemple de modèle de conception de prototype ci-dessus est:
emps List: [Pankaj, Raj, David, Lisa]
empsNew List: [Pankaj, Raj, David, Lisa, John]
empsNew1 List: [Raj, David, Lisa]
Si le clonage d’objet n’était pas fourni, nous aurions dû effectuer un appel à la base de données pour récupérer la liste des employés à chaque fois. Ensuite, effectuez les manipulations qui auraient été consommatrices de ressources et de temps. C’est tout pour le modèle de conception de prototype en Java.
Source:
https://www.digitalocean.com/community/tutorials/prototype-design-pattern-in-java