الگوهای طراحی (به انگلیسی: Design Patterns) الگوها و مستنداتی از روشهای حل برای مشکلات رایج در برنامهنویسی شیءگرا هستند. این الگوها ابتدا توسط کریستوف الکساندر ارائه شد و سپس از سوی گروهی موسوم به دسته چهار (به انگلیسی: Gang of Four) یا به اختصار GOF مورد طبقهبندی قرار گرفت و تحت عنوان کتابی به نام الگوهای طراحی در سال ۱۹۹۴منتشر شد.[۱]
کریستوف الکساندر الگوی طراحی را راه حلی برای مسایلی میداند که دایماً در محیط اطراف رخ میدهد، از این رو میتوان بدون دوباره کاری در آینده مسایل را با سرعت بالاتری حل نمود.[۲]
در طراحی نرمافزارهای مختلف مسایلی دایماً بروز مییابند که در پروژههای قبلی، که حتی دارای قلمرو کاربردی (به انگلیسی: Application Domain) مختلفی هستند، نیز وجود دارند. راه حل موجود برای این روشهای غالباً یکسان است و یافتن طراحی مناسب برای این موارد تکراری وقتگیر و هزینهبر است. از این رو میتوان راهحلهایی را ارائه نمود که مسایل را ساده نماید. از طرفی روح برنامهنویسی شیءگرا بر مبنای قابلیت باز-استفادگی (به انگلیسی: ReUse) و جز-محوری (به انگلیسی: Component-Based) است، موجب ایجاد برنامههایی قابل استفاده در آینده خواهد شد. اریک گاما ،ریچارد هلم، رالف جانسون، جام ولیسایدز که بعدها به دستهٔ۴ معروف شدند در سال ۱۹۹۴ کتاب الگوهای طراحی را به همراه مقدمهای از سوی گریدی بوش به رشتهٔ تحریر درآوردند. این کتاب به دستهبندی ۲۳ الگوهای طراحی میپرداخت که تا آن زمان ابداع شدهبودند. گریدی بوش در مقدمهٔ کتاب الگوهای طراحی از الگوهای طراحی به عنوان راه حلی برای ایجاد سیستمهای پیچیده نام میبرد و از آن به عنوان زبانی نام میبرد که میتواند بر روی دامنههای مختلفی مورد استفاده قرار گیرند.[۳]
گاما و همکارانش از ارایهٔ روش تصویری برای هر الگو خودداری نمودند. به جای آن از روش توصیف نوشتاری آبوت استفاده نمودند. هر الگو دارای یک قالب است که عبارتند از:
این ۲۳ الگوی طراحی، در ۳ گروه زیر دستهبندی میگردند:
نام الگو | شرح الگو |
---|---|
الگوی یگانه ∗ | این الگو جهت پیادهسازی کلاسی است که فقط و فقط به یک نمونه آن از کلاس در سرتاسر یک سیستم نیاز میباشد. |
الگوی کارخانه متد ∗ | این الگو، کلاسی است که نمونههای از کلاسهای دیگر را با توجه به پارامترهای که برای آن ارسال میشود، ایجاد مینماید. |
الگوی کارخانه انتزاعی ∗ | این الگو راهی جهت کپسولهسازی یک گروه از اشیا که دارای خواص مشترک هستند، میباشد. |
الگوی سازنده ∗ | هدف این الگو اینست اشیایی که مراحل ساخت آنها با مراحل پیادهسازی آنها مختلف است بتوانند نمایی متفاوت از این اشیا را بسازند. |
الگوی نمونه اولیه∗ | در این الگو ابتدا نمونه اولیه اشیا ایجاد میگردد و سپس سایر مشخصات مورد نیاز، به آن اضافه میگردد. |
|first2=
بدون |last2=
در Authors list وارد شدهاست (کمک); پارامتر |تاریخ بازیابی=
نیاز به وارد کردن |پیوند=
دارد (کمک)
|first2=
بدون |last2=
در Authors list وارد شدهاست (کمک); پارامتر |تاریخ بازیابی=
نیاز به وارد کردن |پیوند=
دارد (کمک)
|first2=
بدون |last2=
در Authors list وارد شدهاست (کمک); پارامتر |تاریخ بازیابی=
نیاز به وارد کردن |پیوند=
دارد (کمک)