תבנית עיצוב הדגמה היא אחת מתבניות העיצוב הקריאציוניות, כך שהיא מספקת מנגנון של יצירת עצם.
תבנית עיצוב הדגמה
תבנית עיצוב הדגמה משמשת כאשר יצירת העצם היא עסק יקר ודורשת המון זמן ומשאבים ויש לך עצם דומה כבר קיים. תבנית הדגמה מספקת מנגנון להעתקת העצם המקורי לעצם חדש ואז לשנות אותו לפי צרכינו. תבנית עיצוב הדגמה משתמשת בהעתקת ג'אווה כדי להעתיק את העצם.
דוגמת תבנית עיצוב הדגמה
זה יהיה קל להבין את תבנית העיצוב Prototype עם דוגמה. נניח שיש לנו אובייקט שטוען נתונים ממסד נתונים. עכשיו אנו צריכים לשנות את הנתונים הללו בתוכנית שלנו מספר פעמים, לכן זה לא רעיון טוב ליצור את האובייקט באמצעות המילה המפתחית new
ולטעון שוב את כל הנתונים מהמסד נתונים. הגישה הטובה יותר היא לשכפל את האובייקט הקיים לתוך אובייקט חדש ולאחר מכן לבצע את עיבוד הנתונים. תבנית העיצוב Prototype מחייבת שהאובייקט שאתה מעתיק יספק את היכולת להעתיק. זה לא צריך להתבצע על ידי כיתה אחרת. אך האם להשתמש בהעתק של הנכסים של האובייקט באופן עמוק או שטוח תלוי בדרישות והוא החלטה עיצובית. הנה תכנית דוגמה המראה דוגמה לתבנית העיצוב Prototype ב-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(){
//קרא את כל העובדים מבסיס הנתונים ושים אותם ברשימה
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);
}
}
שימו לב ששיטת ה-clone
עוקבת אחר העתק עמוק של רשימת העובדים. הנה תכנית מבחן לדוגמה של תבנית העיצוב 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();
//השתמש בשיטת ה-clone כדי לקבל את אובייקט העובד
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);
}
}
הפלט של תכנית הדוגמה של תבנית העיצוב Prototype מעלה היא:
emps List: [Pankaj, Raj, David, Lisa]
empsNew List: [Pankaj, Raj, David, Lisa, John]
empsNew1 List: [Raj, David, Lisa]
אם לא הוצג העתק של האובייקט, היינו צריכים לבצע קריאה למסד הנתונים כל פעם כדי לקבל את רשימת העובדים. אז לבצע את השינויים שהיו יכולים להיות זמן ומשאבים. זהו כל הדברים על תבנית העיצוב Prototype ב-Java.
Source:
https://www.digitalocean.com/community/tutorials/prototype-design-pattern-in-java