الگوی طراحی چیست : الگوی طراحی یا دیزاین پترن راه حل هایی برای مشکلات رایج در طراحی نرم افزارها هستند. شناخت این الگوها باعث تمایز یک برنامه نویس حرفه ای از برنامه نویسان معمولی میشود. مهم نیست با چه زبان برنامه نویسی کدنویسی میکنید، شناخت و استفاده از این الگوها در طراحی نرم افزارها میتواند کمک بسیار زیادی به شما برای ایجاد نرم افزارها کند. پس به شما توصیه میکنیم مطالعه ادامه این را به هیچ عنوان از دست ندهید.
در طول زمان برنامه نویسان برای توسعه نرم افزارها با مشکلات مختلفی مواجه میشدند. بسیاری از این مشکلات مستقل از زبانهای برنامه نویسی و مشابه هم بودند. بنابراین برای حل این مشکلات راه حلهای مختلفی ارائه شد که به بهترین روش حل و رفع این مشکلات الگوهای طراحی یا Design Pattern می گویند. به عبارت دیگر مجموعه ای از بهترین راه حلهای مشکلات متداول در فرآیند برنامه نویسی نرم افزار را الگوهای طراحی مینامند. دیزاین پترن ها برای حل مشکلات رایج در برنامه نویسی شی گرا به وسیله برنامه نویسانی باتجربه توسعه داده شده اند.
الگوهای طراحی جزو معماریهای نرم افزاری نیستند و فقط شیوه ای صحیح از کدنویسی شی گرا را ارائه میدهند. بنابراین این الگوها فقط در قلمرو کدنویسی شی گرا وارد میشوند و مستقل از زبانهای برنامه نویسی هستند.
الگوهای طراحی اولین بار توسط کریستوف الکساندر (Christopher Alexander) ارائه شدند. کریستوف الکساندر از الگوهای طراحی تحت عنوان راه حل هایی برای مشکلاتی یاد میکرد که به صورت متداول در فرآیند برنامه نویسی رخ میدهند. در سال 1994 گروهی به اسم Gang of Four که اعضای آن را اریک گاما، ریچارد هلم، رالف جانسون، جام ولیسایدز تشکیل میدادند، الگوهای طراحی را از نظر کاربرد طبقه بندی کردند. گروه Gang of Four یا به اختصار GOF، این الگوها را در قالب کتابی به نام الگوهای طراحی منتشر کردند. این کتاب 23 تا از الگوهای طراحی را به سه دسته کلی تقسیم بندی کرده و به معرفی و آموزش آنها پرداخته است.
گاما و همکارانش در این کتاب برای معرفی هر یک از الگوهای طراحی ساختار خاصی را در نظر گرفته اند. آنها از معرفی الگوهای طراحی به صورت تصویری خودداری کرده اند. زیرا بر این اعتقاد بودند که معرفی الگوهای طراحی نیازمند ساختاری جدید و اختصاصی است. بنابراین ساختار زیر را به منظور ارائه بهتر دیزاین پترنها طراحی کردند. اجزای اصلی این ساختار عبارتند از :
الگوهای طراحی با توجه به کاربردها و اهدافی که به آن منظور ارائه شده اند، به سه دسته عمومی Creational Design Patterns، Structural Design Patterns، Behavioral Design Patterns تقسیم میشوند.
به الگوهای طراحی که برای حل مشکلات مربوط به ایجاد اشیا در نرم افزار ارائه شده اند، الگوهای طراحی سازنده یا Creational میگویند. متداولترین دیزاین پترنهای سازنده عبارتند از :
الگوهای طراحی ساختاری یا Structural، مجموعه ای از راه حل هایی هستند که برای حل مشکلات توسعه پذیری ساختار نرم افزارها، به کمک برنامه نویسان میآیند. این دیزاین پترنها برای مدیریت ارتباط میان کلاسها و شیها با یکدیگر استفاده میشوند. این الگوهای طراحی عبارتند از :
الگوهای طراحی رفتاری یا Behavioral مجموعه ای از راهکارهای کدنویسی مربوط به تعامل و ارتباط اشیا هستند. این الگوهای طراحی عبارتند از:
می توان با این دیدگاه به دیزاین پترنها نگاه کرد که استفاده از آنها در حقیقت، بهره مندی از تجارب و تخصص بهترین برنامه نویسان شی گرا در فرآیند کدنویسی است. برخی بر این باور هستند که مشکلاتی مانند استفاده زیاد از کلاس ها، طراحی ضعیف و… جزو مشکلات بنیادی برنامه نویسی شی گرا است. دیزاین پترنها با شناخت صحیح اصول برنامه نویسی شی گرا مزایای زیادی را در اختیار برنامه نویسان قرار میدهند. از جمله مهمترین مزایای استفاده از آنها میتوان به موراد زیر اشاره کرد:
اینکه بدانیم کی و کجا باید از الگوهای طراحی استفاده کنیم، یکی از سوالهای رایج در میان برنامه نویسان است. از آنجایی که هر الگوی طراحی برای کاربردی مشخص و حل مشکلی خاص در فرآیند برنامه نویسی ارائه داده شده است، باید بتوانیم آن مشکلات را در زمان توسعه نرم افزار شناسایی کنیم. پس از شناسایی و تشخیص این گونه مشکلات، باید نحوه استفاده از دیزاین پترنهای ارائه شده برای حل آنها را آموزش ببینیم تا بتوانیم از آنها استفاده کنیم.
شناخت مفاهیم الگوهای طراحی برای همه برنامه نویسان یک ضرورت به شمار میآید. زیرا الگوهای طراحی با هدف رفع مشکلات رایج کدنویسی و استاندارد ساختن فرآیند توسعه نرم افزار ارائه شده اند. برنامه نویسان با به کارگیری الگوهای طراحی قادر هستند نرم افزارهای انعطاف پذیر، قابل توسعه و مقیاس پذیر بسازند که به صورت اصولی طراحی شده اند. آیا تاکنون از الگوهای طراحی استفاده کرده اید؟ به نظر شما مهمترین مزیت استفاده از الگوهای طراحی در کدنویسی شی گرا چیست؟
سون لرن دوست داشتنی