در مهندسی نرم‌افزار، الگوی طراحی (به انگلیسی: Design Pattern) یک راه‌حل عمومی قابل تکرار برای مشکلات متداول در زمینه طراحی نرم‌افزار است. الگوی طراحی، یک طراحی تمام‌شده نیست که به صورت مستقیم بتواند تبدیل به کد منبع یا ماشین شود؛ بلکه، یک توضیح یا قالب برای حل یک مسئله در شرایط مختلف است.

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

بحث 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) برای اولین بار مورد بحث قرار دادند

برای یادگیری الگوهای طراحی یکی از بهترین کتاب ها برای شروع همین کتاب GoF است، که بنده هم این کتاب را مطالعه کرده ام. الگوهای طراحی در این کتاب از دو نظر دسته بندی شده است.بیشتر الگوهای طراحی را با استفاده از دو معیار طبقه بندی کنید:  هدف(purpose) و دامنه(Scope). هدف منعکس‌کننده آنچه یک الگو انجام می دهداست. دامنه مشخص می کند الگوهای کلاس با رابطه بین کلاس ها و زیر کلاس های آنها ارتباط دارد. روابط از طریق ارث بری آغاز می شود. هدف الگوهای طراحی را به دسته های زیر تقسیم بندی می کند.

الگوهای رفتاری:

الگوهای رفتاری تعاملات بین اشیاء را تعریف می کنند و تمرکز بر چگونگی ارتباط اشیا با یکدیگر را تمرکز می دهند. آنها می توانند نمودار های پیچیده جریان را به تنها اتصال بین اشیاء کلاس های مختلف کاهش دهند. الگوهای رفتاری نیز برای ایجاد الگوریتم استفاده می شود که یک کلاس به سادگی از پارامتر دیگری استفاده می کند که قابل تنظیم در زمان اجرا است.

الگوی ایجادی:

الگوهای ایجادی برای ایجاد اشیاء برای یک کلاس مناسب استفاده می شود که به عنوان یک راه حل برای یک مشکل عمل می کند. به طور کلی هنگامی که نمونه های چندین کلاس مختلف در دسترس هستند. آنها به خصوص هنگامی مفید هستند که از پلی مورفیسم استفاده می کنند و نیاز به انتخاب بین کلاس های مختلف در زمان اجرا دارند.

الگوهای ساختاری:

الگوهای ساختاری ساختارهای بزرگتر را از قطعات جداگانه و مستقل، به طور کلی از طبقات مختلف تشکیل می دهند. الگوهای ساختاری، بسته به نوع ساختاری که برای چه هدفی ایجاد می شود، بستگی زیادی به آن دارد.

اولین معیار، که مقصود نامیده شده، منعکس‌کننده آنچه یک الگو انجام می دهداست. یک الگو ممکن است هدف ایجادی، ساختاری یا رفتاری داشته باشد.
الگوهای ایجادی پروسه ایجاد اشیاء را مورد توجه قرار می‌دهند.
الگوهای ساختاری با ترکیب کلاسها و اشیاء سروکار دارند.
الگوهای رفتاری طرقی که اشیاء با همدیگر فعل و انفعال انجام داده و وظایف را توزیع می‌کنند مشخص می‌سازند.

شکل جدول دسته بندی الگوهای طراحی براساس هدف
شکل1: جدول دسته بندی الگوهای طراحی براساس هدف

راه های دیگری برای سازماندهی الگوهای وجود دارد. بعضی از الگوها از طرح های مشابه مشتق می شوند حتی اگر اهداف متفاوت داشته باشند. شکل 2 نشان می دهد که الگوهای طراحی با یکدیگر ارتباط دارند.

معیار دوم، که محدوده نامیده شده، مشخص‌کننده اینکه الگو بر روی کلاسها یا اشیاء اعمال می‌گردد. است. الگوهای در محدوده کلاسها با ارتباطات بین کلاسها و زیر کلاسهای آن‌ها سر و کار دارند. این‌گونه ارتباطات از طریق وراثت برقرار می‌گردد، که بنابراین در زمان کامپایل ثابت می‌شوند. الگوهای در محدوده اشیاء با ارتباطات بین اشیاء سرو کار داشته که می‌تواند در زمان اجرا تغییر کرده و در نتیجه پویا هستند. تقریباً تمام الگوها از وراثت استفاده می‌کنند. بنابراین الگوهایی که با برچسب “در محدوده کلاس” معین شده‌اند آنهایی هستند که تنها بر روی ارتباط بین کلاسها تأکید دارند. توجه کنید که بیشتر الگوها در محدوده اشیاء عمل می‌کنند.

رابطه بین الگوهای طراحی
شکل2:رابطه بین الگوهای طراحی

برچسب‌ها , , , , , , , , , , , , , , , , , , , , ,


دیدگاهتان را بنویسید

Want to see your ugly mug by your comment? Get a free custom avatar at Gravatar.