نمط تصميم النموذج الأولي في Java

نمط تصميم النموذج الأولي هو واحد من أنماط التصميم الإنشائي، لذلك يوفر آلية لإنشاء الكائن.

نمط تصميم النموذج الأولي

يُستخدم نمط تصميم النموذج الأولي عندما يكون إنشاء الكائن أمرًا مكلفًا ويتطلب الكثير من الوقت والموارد ولديك كائن مشابه موجود بالفعل. يوفر نمط النموذج الأولي آلية لنسخ الكائن الأصلي إلى كائن جديد ثم تعديله وفقًا لاحتياجاتنا. يستخدم نمط تصميم النموذج الأولي تكرار جافا لنسخ الكائن.

مثال على نمط تصميم النموذج الأولي

‎سيكون من السهل فهم نمط تصميم النموذج الأولي بوجود مثال. لنفترض أن لدينا كائنًا يحمل بيانات من قاعدة البيانات. الآن نحن بحاجة إلى تعديل هذه البيانات في برنامجنا عدة مرات، لذا فإن فكرة إنشاء الكائن باستخدام الكلمة الرئيسية new وتحميل كل البيانات مرة أخرى من قاعدة البيانات ليست فكرة جيدة. النهج الأفضل هو نسخ الكائن الحالي إلى كائن جديد ومن ثم القيام بتعديل البيانات. يفرض نمط تصميم النموذج الأولي أن يقدم الكائن الذي تقوم بنسخه ميزة النسخ. يجب أن لا يتم ذلك بواسطة أي فئة أخرى. ومع ذلك، ما إذا كان يجب استخدام نسخة سطحية أم عميقة لخصائص الكائن يعتمد على المتطلبات وهي قرار تصميم. فيما يلي برنامج عيني يظهر مثالًا على نمط تصميم النموذج الأولي في جافا. 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 مستبدلة لتوفير نسخة عميقة من قائمة الموظفين. فيما يلي برنامج اختبار مثال على نمط تصميم النموذج الأولي الذي سيظهر فائدة هذا النمط. 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();
		
		// استخدم طريقة الاستنساخ للحصول على كائن الموظف
		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);
	}

}

إخراج برنامج مثال نمط تصميم النموذج الأولي أعلاه هو:

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

إذا لم يتم توفير استنساخ الكائن، كنا سنضطر إلى إجراء استدعاء لقاعدة البيانات لاسترجاع قائمة الموظفين في كل مرة. ثم قم بالتلاعب الذي كان سيكون مكلفًا من حيث الموارد والوقت. هذا كل شيء بخصوص نمط تصميم النموذج الأولي في جافا.

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