الگو و الگوهای طراحی
الگو چیست؟
¡ یک الگو در موقعیت ها و برنامه های کاربردی مختلف تکرار شده و متناوبا استفاده می شود. این موقعیت می تواند مربوط به ساختار و یا رفتار نرم افزار باشد.
¡ یک طرح کلی از یک راه حل با قابلیت استفاده مجدد برای یک مسئله کلی است.
الگوهای طراحی
1. تاریخچه
بحث 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) برای اولین بار مورد بحث قرار دادند.
2. اشنایی با مفاهیم
در الگوی طراحی از اشیاء ویژهای به نام آداپتور (واسطه) استفاده میشود. این آداپتورها به اشیاء مورد نیاز در پروژه مرتبط میشوند. نوشتن برنامه تا حد زیادی از طریق این واسطهها انجام میشود . الگوهای طراحی را بر اساس دو معیار طبقه بندی میکنیم.
1- اولین معیار، که مقصود نامیده شده، منعکس کننده آنچه یک الگو
انجام می دهداست. یک الگو ممکن است هدف ایجادی، ساختاری یا رفتاری داشته باشد.
الگوهای
ایجادی پروسه ایجاد اشیاء را مورد توجه قرار میدهند.
الگوهای
ساختاری با ترکیب کلاسها و اشیاء سروکار دارند.
الگوهای
رفتاری طرقی که اشیاء با همدیگر فعل و انفعال انجام داده و وظایف را توزیع میکنند
مشخص میسازند.
2- معیار دوم، که محدوده نامیده شده، مشخص کننده
اینکه الگو بر روی کلاسها یا اشیاء اعمال میگردد. است. الگوهای در محدوده کلاسها با ارتباطات بین کلاسها و زیر
کلاسهای آنها سر و کار دارند. اینگونه ارتباطات از طریق وراثت برقرار میگردد، که
بنابراین در زمان کمپایل ثابت میشوند. الگوهای در محدوده اشیاء با ارتباطات بین
اشیاء سرو کار داشته که میتواند در زمان اجرا تغییر کرده و در نتیجه پویا هستند.
تقریباً تمام الگوها از وراثت استفاده میکنند. بنابراین الگوهایی که با برچسب
"در محدوده کلاس" معین شدهاند آنهایی هستند که تنها بر روی ارتباط بین
کلاسها تاکید دارند. توجه کنید که بیشتر الگوها در محدوده اشیاء عمل میکنند.
3. کاربرد
گاهی اوقات برنامهنویسان هنگام طراحی و یا پیاده سازی برنامههای خود، با کلاسهایی روبرو میشوند که اصطلاحاً کلاسهای کلاسیک نیستند. این گونه کلاسها مشکلاتی را ایجاد میکنند که با کمک الگوها میتوان مشکلات را تا حجم قابل قبولی حل کرد. در واقع طراحی چنین کلاسهایی، به مرور زمان، گریبانگیر هر برنامه نویسی شدهاست و برنامه نویسان خبره با توجه به تجربیات شخصی خود و دیگران، تصمیم به ایجاد الگوهایی کردهاند که راه حل این گونه مشکلات خواهد بود. در حال حاضر شاید در حدود صدها الگو در این رابطه وجود داشته باشد که تنها تعداد اندکی از آنها استاندارد شده و مورد استفاده طراحان و برنامهنویسان قرار میگیرد.
منابع با اندکی تغییر
ازمایشگاه هوشمند
وکی پدیا