Prototype Pattern یکی از الگوهای Creational است که هدف از آن :
مشابهسازی کلاسی موجود به جای ایجاد وهلهای از آن (هنگامی که ایجاد نمونهای دیگر بر روی کارایی برنامه تاثیر منفی داشته باشد) .
به عنوان مثال در موارد زیر کاربرد دارد:
زمانی که نیاز است از دیتابیسی حجیم چندین تراکنش صورت گیرد تا پاسخ مسالهای پیدا شود. وقتی این پاسخ بدست آمد شاید بخواهید عملیاتی بر روی آنها انجام شود (بدون نیاز به انجاک تراکنش جدید) در این حالت داشتن و یا تهیه یک نوع کپی از دادههای حاصل بسیار مطلوب است.
اطلاعات شما در فایلی وجود دارد در هنگام ساخت نمونهای از کلاس، این اطلاعات از فایل خوانده شده (رکورد به رکورد) و داخل کلاس افزوده میشود. برای انجام هر عملیات ممکن است نیاز به نمونهای از این اطلاعات باشد و ساخت نمونهای جدید و لود کردن اطلاعات فایل، سربار زیادی ایجاد میکند.
برای پیادهسازی این الگو :
یک کلاس پایه abstract ایجاد میکنیم که متد ()clone را تعریف میکند. هر کلاسی که از کلاسه پایه مشتق شود متد ()clone را پیادهسازی میکند.
هر زمان که نیاز به کپی از این کلاس بود به جای نوشتن new متد ()Clone فراخوانده میشود.
البته هم Prototype Pattern و هم Factory Method در فرآیندهای تولید اشیاء استفاده میشوند و الگوهای دیگری همچون Facade، Flyweight در تركیب كلاسها و اشیاء مورد استفاده قرار میگیرند یا Strategy, Template در چگونگی تعامل بین كلاسها یا اشیاء و نحوهی توزیع مسؤولیت بین آنها را مورد بحث قرار میدهند.