چه کسی الگوها را اختراع کرد؟ این پرسشی جالب است، اما پاسخ دقیق آن ساده نیست. الگوهای طراحی مفاهیم پیچیده یا مبهم نیستند؛ برعکس، آنها راهحلهای استاندارد برای مشکلات رایج در طراحی شیگرا هستند. وقتی یک راهحل بارها در پروژههای مختلف تکرار میشود، نهایتاً کسی نامی برای آن انتخاب کرده و جزئیات آن را ثبت میکند. این فرآیند اساس کشف و ثبت یک الگو است و معمولاً شامل مستندسازی اهداف، مشکلات و راهحلهای پیشنهادی است.
مفهوم الگوها اولین بار توسط کریستوفر الکساندر در کتاب Pattern Language: Towns, Buildings, Construction مطرح شد. این کتاب یک "زبان" برای طراحی محیط شهری معرفی میکند که واحدهای آن الگوها هستند. این الگوها ممکن است شامل جزئیاتی درباره ارتفاع پنجرهها، تعداد طبقات ساختمانها، اندازه فضای سبز محلهها و دیگر ویژگیهای طراحی شهری باشند. هدف اصلی آن ارائه راهحلهای قابل بازتولید برای مسائل طراحی بود.
این ایده بعدها توسط چهار برنامهنویس به دنیای نرمافزار منتقل شد: اریش گاما، ریچارد هلم، رالف جانسون و جان ولیسیدز، که به جمع "Gang of Four" یا GoF معروف شدند. در سال 1994، آنها کتاب Design Patterns: Elements of Reusable Object-Oriented Software را منتشر کردند که در آن 23 الگوی طراحی شیگرا را معرفی کردند. این کتاب مشکلات رایج طراحی شیگرا را حل میکرد و به سرعت به یکی از منابع پایهای و پرفروش برای توسعهدهندگان نرمافزار تبدیل شد.
الگوهای GoF به سه دسته اصلی تقسیم میشوند: ساختاری، رفتاری و ایجادکننده. الگوهای ساختاری بر چگونگی ترکیب کلاسها و اشیاء تمرکز دارند، الگوهای رفتاری نحوه تعامل و تبادل پیام بین اشیاء را شرح میدهند، و الگوهای ایجادکننده مسئول مدیریت و ساخت اشیاء هستند. هر الگو شامل هدف، مشکل، راهحل، نمودار کلاسها، نمونه کد و نکات کاربردی میشود تا توسعهدهندگان بتوانند آن را در پروژههای خود بهراحتی اعمال کنند.
از زمان انتشار کتاب GoF، دهها الگوی شیگرای جدید کشف شده است و "رویکرد الگو" در حوزههای مختلف برنامهنویسی، از جمله طراحی رابط کاربری، معماری نرمافزار و سیستمهای توزیعشده، محبوبیت یافته است. امروزه الگوهای طراحی به یکی از اصول بنیادین آموزش مهندسی نرمافزار تبدیل شدهاند و بسیاری از فریمورکها و کتابخانهها نیز الگوهای طراحی را در ساختار داخلی خود به کار میبرند.