design pattern, java, جاوا, دیزاین پترن

Prototype پترن در جاوا (Prototype pattern in java)

Prototype پترن در جاوا

در این قسمت تیم کدگیت به آموزش prototype پترن در جاوا می‌پردازد. پیش‌نیازهای این آموزش شامل موارد زیر است:

  1. آشنایی با interface
  2. آشنایی با شی گرایی
  3. آشنایی با متد
  4. آشنایی با Constructor
  5. آشنایی با رشته ها
  6. دیزاین پترن

Creational Design Pattern

یکی از زیر شاخه های دیزاین پترن Creational Design Pattern هست. این پترن راهی برای ساخت اشیاست. وقتی از این الگو استفاده میشود که ما میخواهیم در برنامه خود از یک کلاس یک شی را بسازیم. اما برای بسیاری ممکن است ساخت شی بسیار ساده باشد و فقط با new کردن ما یک شی را بسازیم. اما hard code راه حل خوبی نیست!! زیرا ما بعضی اوقات در کد خود هویت یک کلاس را عوض کنیم و در این گونه اوقات ما باید از Creational Design pattern استفاده میکنیم.

Prototype پترن در جاوا

prototype پترن یکی از پر کاربردترین الگوی های طراحی است. این پترن یکی از زیر شاخه های Creational Design Pattern است. هدف prototype پترن این است که ما شی های مختلفی از یک کلاس را نسازیم و یک شی را که داریم ساده تر کنیم و هزینه‌ای بابت ساخت شی جدید نپردازیم.

از جمله فواید prototype پترن در جاوا می‌توان به موارد زیر اشاره کرد:

  1. باعث کاهش ارث بری بیهوده میشود.
  2. مخفی نگه داشتن شی های پیچیده.
  3. باعث حذف و جابجایی اشیا در زمان اجرا میشود.

مثال prototype پترن در جاوا

برای درک بهتر prototype پترن در جاوا ما در این قسمت مثالی را ارایه میکنیم. در این مثال فرض کردیم ما اطلاعات کاملی از هر کارمند را ذخیره می‌کنیم. یک interface هم به نام prototype نوشتیم که متدی به نام clone در خود دارد برای نوع prototype ما. کد آن به صورت زیر است:

public class EmployeeRecord implements Prototype {
     private int id;
     private String name, designation;
     private double salary;
     private String address;

     public EmployeeRecord() {
          System.out.println("   Employee Records of CodeGate Corporation ");
          System.out.println("---------------------------------------------");
          System.out.println("Eid" + "\t" + "Ename" + "\t" + "Edesignation"
                   + "\t" + "Esalary" + "\t\t" + "Eaddress");

     }

     public EmployeeRecord(int id, String name, String designation,
              double salary, String address) {

          this();
          this.id = id;
          this.name = name;
          this.designation = designation;
          this.salary = salary;
          this.address = address;
     }

     public void showRecord() {

          System.out.println(id + "\t" + name + "\t" + designation + " "
                   + salary + "\t\t" + address);
     }

     @Override
     public Prototype getClone() {

          return new EmployeeRecord(id, name, designation, salary, address);
     }
}
public interface Prototype {
     public Prototype getClone();
}

تست برنامه prototype پترن در جاوا

برای تست کدهای بالا، کد main زیر را بزنید:

public static void main(String[] args) {
          int eid = 123;

          String ename = "saeed";

          String edesignation = "software engineer";

          String eaddress = "Tehran Iran";

          double esalary = 1;

          EmployeeRecord e1 = new EmployeeRecord(eid, ename, edesignation,
                   esalary, eaddress);

          e1.showRecord();
          EmployeeRecord e2 = (EmployeeRecord) e1.getClone();
          e2.showRecord();

     }

همانطور که در کد بالا میبینید ما ابتدا متغیرهای کارمند خود را مقدار دهی کردیم و سپس آن را ساختیم. متغیر e1 کارمند ما است که ساختیم و متغیر e2 کارمندی است که ما با استفاده از prototype پترن ایجاد کردیم و دیگر کارمند را دوباره نساختیم!.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *