با استفاده از این الگو به جای ایجاد متعدد یک کلاس در بخش‌های مختلف پروژه، میتوانید از اولین شی ایجاد شده، کپی‌برداری کنید. به این ترتیب که کلاس مورد نظر شامل متدی با نام clone می‌باشد. یکی از دلایل استفاده از این الگو این است که Client در گیر نحوه ایجاد کلاس اصلی نباشد و تنها در صورت نیاز، از کلاس مورد نظر یک کپی تهیه نماید. دلیل دیگر استفاده از این روش، افزایش نا محسوس سرعت اجرای برنامه می‌باشد. به این ترتیب که با اجرای دستور clone یک کپی از کلاس موجود در حافظه کپی می‌شود اما با اجرای دستور new یک شی از روی دیسک خوانده شده و در حافظه قرار میگیرد. ممکن است در برخی موارد بخواهید کلاسی ایجاد کنید که پارامتر های سازنده زیادی دارد، با هر بار ایجاد این کلاس بایستی این پارامتر ها مجدداً ارسال شده تا یک شی جدید از کلاس مورد نظر ایجاد شود، اما با استفاده از این الگو میتوانید یک بار کلاس مورد نظر را ایجاد نموده و در بخش‌های مختلف بدون اینکه درگیر پارامتر های آن باشید از این شی کپی‌برداری نمایید.

prototype-pattern

 

در تصویر بالا یک اینترفیس یا یک کلاس انتزاعی (abstract) با نام Prototype برای استاندارد سازی کلاس‌های مربوط به prototype ایجاد شده است. سپس دو کلاس دیگر از کلاس اصلی ارث بری کرده اند. حال Client پس از ایجاد هر یک از کلاس‌های Concrete کافیست متد Clone را اجرا نماید تا یک شی جدید دیگری از نوع همان کلاس داشته باشد. البته در برخی زبان‌ها (مانند PHP) دستوراتی برای کپی‌برداری از یک شی وجود دارد، برای مثال در زبان PHP دستوری با نام clone وجود دارد که میتوانید با استفاده از آن، از یک شی کپی‌برداری نمایید.(در زبان PHP نیز میتوانید با استفاده از Magic Method ای با نام ()clone__ دستوراتی را پس از اجرای دستور clone بر روی شی جدید اجرا نمایید)

نمونه کد PHP :

 

منبع کد:

https://sourcemaking.com

محمد باقر رستمی

برنامه نویسی رو دوست دارم و از کارم و بیشتر از اون از یادگرفتن لذت می برم. دوست دارم از این طریق برای مردم دنیا مفید باشم. فارغ از رنگ، نژاد، ملیت و جنسیت.

Latest posts by محمد باقر رستمی (see all)

facebooktwittergoogle_pluslinkedin

دیدگاه

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

*

*