Шаблон проектирования прототипа используется, когда создание объектов требует слишком много системных ресурсов и производительности, и мы используем этот шаблон проектирования именно тогда, когда мы хотим иметь много экземпляров класса, и эти экземпляры похожи, поэтому мы действительно не хотим Чтобы использовать, например, оператор «новый», потому что он будет очень дорогостоящим, все, что нам нужно, - это создать экземпляры этих объектов на основе первого, уже созданного.
Преимущество состоит в том, что новый объект будет независимым, и для его создания в качестве первого не потребуется слишком много ресурсов. вот пример использования этой концепции в java:
import java.util.Vector;
public class Samsung implements Cloneable{
private Vector<String> models;
public Samsung(){
models=new Vector<>();
//we suppose in this comments we access to a data Base to get models
//and then we get a full list of Samsung models
//... and finish
//Sadly we took to much of time to fetch the database
//we don't want to waste our time again because Samsung rarely update its database
models.add("Samsung S1");
models.add("Samsung S2");
models.add("galaxy note");
models.add("galaxy star");
}
public Samsung(Vector<String> models){
this.models=models;
}
public Samsung clone() {
Vector<String> modelsCopy=new Vector<>();
Samsung samsungCopy=null;
//here we don't need to access the database again, we will just copy the previous list
try{
for(String model:this.models){
modelsCopy.add(model);
}
samsungCopy=new Samsung(modelsCopy);
return samsungCopy;
}
catch(Exception e){
return null;
}
}
}
основная программа:
public static void main(String[] args) {
Samsung usa_Samsung=new Samsung();
Samsung morocco_Samsung=usa_Samsung.clone();
System.out.println("original = " + usa_Samsung);
System.out.println("copy = " + morocco_Samsung);
}
вывод :
original = Samsung@6d06d69c
copy = Samsung@7852e922
как вы видите, у этих объектов разные адреса, потому что они разные.
Примечание ! Я использовал название «Самсунг» только в качестве примера.
person
Elmzabi Hassan
schedule
13.04.2018