الگوی طراحی Prototype چیست؟
الگوی طراحی Prototype چیست؟

مقدمه
الگوی Prototype یکی از الگوهای Creational Design Patterns است که هدف آن ایجاد اشیاء جدید از طریق کپیبرداری از یک نمونه موجود میباشد، بهجای آنکه هر بار شیء جدید از ابتدا ساخته شود.
به بیان رسمیتر:
در این الگو، یک نمونه اولیه (Prototype) تعریف میشود و اشیاء جدید با Clone کردن این نمونه ایجاد میگردند.
مسئلهای که Prototypeحل میکند
در برخی سیستمها:
ساخت یک شیء هزینهبر یا زمانبر است
شیء دارای تنظیمات اولیه متعدد است
اشیاء زیادی با ساختار مشابه نیاز داریم
در چنین شرایطی، استفاده مکرر از new باعث افزایش پیچیدگی و وابستگی میشود.
Prototype این مشکل را با کپیبرداری کنترلشده حل میکند.
ساختار الگوی Prototype
این الگو معمولاً شامل اجزای زیر است:
Prototype Interface برای تعریف متد Clone
Concrete Prototype که منطق کپیبرداری را پیادهسازی میکند
Client که بهجای new، از Clone استفاده میکند
مثال ساده در C#
۱. تعریف Prototype
۲. پیادهسازی Prototype
MemberwiseClone یک کپی سطحی (Shallow Copy) از شیء ایجاد میکند.۳. استفاده از Prototype
در این مثال:
person1وperson2دو شیء مستقل هستندperson2از رویperson1ساخته شده است، نه از طریق
مشاهده آموزش کامل الگوهای طراحی مهندس بهمن آبادی
مزایای استفاده از Prototype
کاهش هزینه ساخت اشیاء
افزایش سرعت ایجاد نمونهها
کاهش وابستگی به کلاسهای Concrete
مناسب برای اشیاء مشابه با تنظیمات مشترک
موارد استفاده رایج
ساخت اشیاء گرافیکی یا کاراکترهای بازی
ایجاد Templateهای قابل تکرار
تنظیمات پیشفرض کاربران
اشیائی که نمونهسازی آنها پیچیده است
تفاوت Prototype با Factory
Factory تصمیم میگیرد چه نوع شیء ساخته شود
Prototype مشخص میکند از روی کدام نمونه کپی گرفته شود
نقش الگوهای طراحی در حرفهای شدن برنامهنویسان
تفاوت میان برنامهنویسی که الگوهای طراحی (Design Patterns) را میشناسد با برنامهنویسی که با آنها آشنا نیست، صرفاً در نوشتن کد تمیزتر خلاصه نمیشود، بلکه در نحوه فکر کردن و حل مسئله نمود پیدا میکند. برنامهنویسی که الگوهای طراحی را میداند، قبل از نوشتن کد به ساختار، توسعهپذیری و تغییرات آینده فکر میکند و تصمیماتش آگاهانه و مبتنی بر تجربههای اثباتشده است؛ در مقابل، برنامهنویسی که این الگوها را نمیشناسد معمولاً راهحلهای مقطعی و شرطمحور ارائه میدهد که در کوتاهمدت کار میکنند اما در بلندمدت باعث پیچیدگی، وابستگی زیاد و دشواری نگهداری سیستم میشوند. بهبیان دیگر، الگوهای طراحی سطح کدنویسی را از «صرفاً اجرا شدن» به «طراحی حرفهای نرمافزار» ارتقا میدهند.
جمعبندی
الگوی Prototype زمانی مناسب است که:
اشیاء مشابه زیادی نیاز دارید
ساخت شیء از صفر منطقی یا بهصرفه نیست
کپیبرداری از نمونه موجود سادهتر و امنتر است