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

آموزش الگوهای طراحی، الگوی Prototype، طراحی نرم‌افزار 1404/10/9
نویسنده: مدرس بهمن آبادی

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

آموزش الگوهای طراحی

مقدمه

الگوی Prototype یکی از الگوهای Creational Design Patterns است که هدف آن ایجاد اشیاء جدید از طریق کپی‌برداری از یک نمونه موجود می‌باشد، به‌جای آن‌که هر بار شیء جدید از ابتدا ساخته شود.

به بیان رسمی‌تر:
در این الگو، یک نمونه اولیه (Prototype) تعریف می‌شود و اشیاء جدید با Clone کردن این نمونه ایجاد می‌گردند.

مسئله‌ای که Prototypeحل می‌کند

در برخی سیستم‌ها:

  • ساخت یک شیء هزینه‌بر یا زمان‌بر است

  • شیء دارای تنظیمات اولیه متعدد است

  • اشیاء زیادی با ساختار مشابه نیاز داریم

در چنین شرایطی، استفاده مکرر از new باعث افزایش پیچیدگی و وابستگی می‌شود.
Prototype این مشکل را با کپی‌برداری کنترل‌شده حل می‌کند.

ساختار الگوی Prototype

این الگو معمولاً شامل اجزای زیر است:

  1. Prototype Interface برای تعریف متد Clone

  2. Concrete Prototype که منطق کپی‌برداری را پیاده‌سازی می‌کند

  3. Client که به‌جای new، از Clone استفاده می‌کند

مثال ساده در C#

۱. تعریف Prototype

public interface IPrototype
{
    IPrototype Clone();
}

۲. پیاده‌سازی Prototype

public class Person : IPrototype
{
    public string Name;
    public int Age;

    public IPrototype Clone()
    {
        return (Person)this.MemberwiseClone();
    }
}
متد MemberwiseClone یک کپی سطحی (Shallow Copy) از شیء ایجاد می‌کند.

۳. استفاده از Prototype

var person1 = new Person { Name = "Ali", Age = 30 };
var person2 = (Person)person1.Clone();

person2.Name = "Reza";

در این مثال:

  • person1 و person2 دو شیء مستقل هستند

  • person2 از روی person1 ساخته شده است، نه از طریق 

مشاهده آموزش کامل الگوهای طراحی مهندس بهمن آبادی

مزایای استفاده از Prototype

  • کاهش هزینه ساخت اشیاء

  • افزایش سرعت ایجاد نمونه‌ها

  • کاهش وابستگی به کلاس‌های Concrete

  • مناسب برای اشیاء مشابه با تنظیمات مشترک

موارد استفاده رایج

  • ساخت اشیاء گرافیکی یا کاراکترهای بازی

  • ایجاد Templateهای قابل تکرار

  • تنظیمات پیش‌فرض کاربران

  • اشیائی که نمونه‌سازی آن‌ها پیچیده است

تفاوت Prototype با Factory

  • Factory تصمیم می‌گیرد چه نوع شیء ساخته شود

  • Prototype مشخص می‌کند از روی کدام نمونه کپی گرفته شود

 

نقش الگوهای طراحی در حرفه‌ای شدن برنامه‌نویسان

تفاوت میان برنامه‌نویسی که الگوهای طراحی (Design Patterns) را می‌شناسد با برنامه‌نویسی که با آن‌ها آشنا نیست، صرفاً در نوشتن کد تمیزتر خلاصه نمی‌شود، بلکه در نحوه فکر کردن و حل مسئله نمود پیدا می‌کند. برنامه‌نویسی که الگوهای طراحی را می‌داند، قبل از نوشتن کد به ساختار، توسعه‌پذیری و تغییرات آینده فکر می‌کند و تصمیماتش آگاهانه و مبتنی بر تجربه‌های اثبات‌شده است؛ در مقابل، برنامه‌نویسی که این الگوها را نمی‌شناسد معمولاً راه‌حل‌های مقطعی و شرط‌محور ارائه می‌دهد که در کوتاه‌مدت کار می‌کنند اما در بلندمدت باعث پیچیدگی، وابستگی زیاد و دشواری نگهداری سیستم می‌شوند. به‌بیان دیگر، الگوهای طراحی سطح کدنویسی را از «صرفاً اجرا شدن» به «طراحی حرفه‌ای نرم‌افزار» ارتقا می‌دهند.

جمع‌بندی

الگوی Prototype زمانی مناسب است که:

  • اشیاء مشابه زیادی نیاز دارید

  • ساخت شیء از صفر منطقی یا به‌صرفه نیست

  • کپی‌برداری از نمونه موجود ساده‌تر و امن‌تر است