یک الگوی طراحی، راه حلی است که برای حل مشکلات متداول در طراحی یا پیاده سازی نرم افزار به کار می رود.
گاهی مهندسان نرم افزار در طراحی و پیاده سازی نرم افزارهای مختلف با مشکلات مشابهی مواجه می شوند که می توان با راه حلی مشترک این مشکلات را برطرف کرد. به این راه حل های مشترک الگوی طراحی می گویند که یک برنامه نویس حرفه ای باید آنها رو خوب بشناسد.
بحث Design Pattern برای اولین بار در دنیای نرم‌افزار توسط GoF صورت گرفت. یک گروه چهار نفره شامل: Erich Gamma ،Richard Helm ،Ralph Johnson و John Vlissides ملقب به Gang of Four یا GoF هستند.
این گروه در ۲۱ اکتبر سال ۱۹۹۴ کتابی را تحت عنوان Design Patterns: Elements of Reusable Object-Oriented Software منتشر کردند (این کتاب تا تاریخ آوریل ۲۰۰۷، سی وشش بار تجدید چاپ شده است).آنها در این کتاب ۲۳ الگوی طراحی کلاسیک را با زبان‌های شی گرا مطرح در آن زمان (++C و Smalltalk) برای اولین بار مورد بحث قرار دادند.

الگوهای طراحی شی گرا معمولا نشان‌دهنده ی روابط و تعامل‌ها بین کلاس‌ها و شیء‌ها هستند، بدون این‌ که کلاس‌ها یا اشیا نهایی برنامه را مشخص کند.

گروهGang of Four  الگوی های طراحی به سه دسته زیر تقسیم می کنند:
  • Creational Patterns(الگوهای ایجادی): این الگوها به مکانیزم های مناسب ایجاد اشیا در شرایط مختلف می پردازند.
  • Structural Patterns (الگوهای ساختاری): این الگوها به ترکیب کلاس ها و اشیاء می پردازند.
  • Behavioral Patterns (الگوهای رفتاری): این الگوها به تعامل بین موجودیت های برنامه می پردازند.
در رابطه با الگوهای طراحی باید چند نکته زیر را به خاطر داشته باشید:
  • الگوهای طراحی کدهای آماده و از پیش نوشته شده نیستند که آنها را به برنامه خود اصافه کنید.
  • هدف آنها این نیست که به شما بگوید چگونه نرم افزارهایتان را بسازید بلکه شما را در حل مشکلات متداول طراحی و پیاده سازی راهنمایی می کنند.
  • الگوهای طراحی تنها راه حل این مشکلات متداول نیستند بلکه بهینه ترین راه حل های این مشکلات هستند که حاصل تجربه دیگر برنامه نویسان هستند.
  • شما مجبور به استفاده از این الگوها نیستید تنها زمانی که به آنها نیاز دارید از آنها استفاده کنید. استفاده نابجا از الگوهای طراحی باعث شلوغی و پیچیدگی برنامه ها می شود.
منبع آموزشی
کتاب زیر 23 الگوی طراحی GoF را با زبان جاوا به صورت ساده و روان آموزش می دهد و می تواند منبع آموزشی خوبی در این زمینه باشد. برای دانلود روی لینک زیر کلیک کنید.
Java Design Patternns

امیدوارم این مطلب برای شما مفید باشد.