الگوهای طراحی (Design Patterns)

معرفی Design Patterns

در سال 1994، چهار نویسنده به نام های Erich Gamma، Richard Helm، Ralph Johnson و John Vlissides کتابی با عنوان "الگوهای طراحی: عناصر دوباره قابل استفاده نرم‌افزار شیءگرا" (Design Patterns - Elements of Reusable Object-Oriented Software) منتشر کردند که به تفسیر مفهوم الگوهای طراحی در توسعه نرم افزار می پرداخت. این نویسندگان در مجموع به عنوان (Gang of Four (GOF شناخته می شوند. با توجه به این نویسندگان، الگوهای طراحی عمدتا بر اساس اصول طراحی شیء گرا هستند.

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

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

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

در حالی که الگوهای طراحی وابسته به زبان نیستند، اغلب شامل آبجکت ها یا کلاس ها می شوند. بنابراین، آنها معمولا با برنامه نویسی شی گرا ارتباط دارند. الگوهای فردی را می توان به سه دسته تقسیم کرد: 1) الگوهای خلاقیت، 2) الگوهای ساختاری و 3) الگوهای رفتاری.

الگوهای خلاقیت

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

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

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

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

الگوهای طراحی رفتاری، رفتار آبجکت ها را، مانند نحوه ارتباط آنها با یکدیگر، توصیف می کنند.

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

کاربرد الگوهای طراحی

الگوهای طراحی دارای دو کاربرد اصلی در توسعه نرم افزار است.

پلتفرم مشترک برای توسعه دهندگان

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

بهترین روش ها

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