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



visibility  
mode_comment   ۰

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

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

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

info نکته :

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

تاریخچه الگوهای طراحی

الگوهای طراحی اولین بار توسط کریستوف الکساندر (Christopher Alexander) ارائه شدند. کریستوف الکساندر از الگوهای طراحی تحت عنوان راه حل هایی برای مشکلاتی یاد می کرد که به صورت متداول در فرآیند برنامه نویسی رخ می دهند. در سال 1994 گروهی به اسم Gang of Four که اعضای آن را اریک گاما، ریچارد هلم، رالف جانسون، جام ولیسایدز تشکیل می دادند، الگوهای طراحی را از نظر کاربرد طبقه‌ بندی کردند. گروه Gang of Four یا به اختصار GOF، این الگوها را در قالب کتابی به نام الگوهای طراحی منتشر کردند. این کتاب 23 تا از الگوهای طراحی را به سه دسته کلی تقسیم بندی کرده و به معرفی و آموزش آن ها پرداخته است.

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

  • نام و طبقه‌ بندی: نام الگو و توصیفی کوتاه از آن را بیان می کند.
  • هدف: در این بخش به صورت مختصر توضیحاتی در مورد هدف از ارائه الگو مطرح شده است.
  • نام دیگر: اگر الگوی طراحی با نام های دیگری شناخته شده باشد در این بخش آن ها معرفی می شوند.
  • راه حل: این قسمت به سناریویی که در آن از الگوی طراحی استفاده شده‌ باشد و نحوه استفاده از کلاس ها و شی ها برای حل مشکل مد نظر می پردازد.
  • کاربرد: در این بخش توصیف می شود که الگوی مورد نظر در چه شرایطی کاربرد خواهد داشت.
  • ساختار: در این بخش ساختار اصلی الگوهای طراحی با استفاده از UML نمایش داده می‌ شوند.
  • کلاس ها و اشیای مورد استفاده: مسئولیت کلاس ها یا اشیایی که در الگوی طراحی استفاده می شوند در این بخش نوشته می شوند.
  • نحوه همکاری: چگونگی همکاری کلاس ها و شی ها در این قسمت مشخص می شود.
  • روش پیاده‌ سازی: در این بخش مراحل پیاده سازی مطرح می شوند.
  • کد نمونه: در این بخش مثال ها در قالب زبان های برنامه نویسی نشان داده شده اند.
  • مثال‌ های کاربردی: در این بخش مثال هایی کاربردی از الگوی طراحی ذکر می شوند.
  • ارتباط الگوی طراحی با سایر الگوها: بخش ها مرتبط الگوی طراحی با سایر الگوها در این بخش مورد بررسی قرار می گیرد.

انواع الگوهای طراحی

دیزاین پترن ها آموزش الگوهای طراحی

الگوهای طراحی با توجه به کاربردها و اهدافی که به آن منظور ارائه شده اند، به سه دسته عمومی Creational Design Patterns، Structural Design Patterns، Behavioral Design Patterns تقسیم می شوند.

الگوهای طراحی سازنده (Creational Design Patterns)

به الگوهای طراحی که برای حل مشکلات مربوط به ایجاد اشیا در نرم افزار ارائه شده اند، الگوهای طراحی سازنده یا Creational می گویند. متداول ترین دیزاین پترن های سازنده عبارتند از :

الگوهای طراحی ساختاری(Structural Design Patterns)

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

  • Adapter 
  • Decorator
  • Facade
  • Bridge
  • Composite
  • Flyweight
  • Proxy

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

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

  • Chain of responsibility
  • Strategy
  • Iterator
  • Command
  • Mediator
  • Memento
  • Observer
  • State
  • Template Method
  • Visitor

مزایای استفاده از الگوهای طراحی

الگوی طراحی

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

  • افزایش مقیاس پذیری (scalability)
  • افزایش قابلیت توسعه پذیری (expandability)
  • افزایش انعطاف پذیری (flexibility)
  • افزایش سرعت توسعه نرم افزارها
  • کاهش خطاها و مشکلات
  • کاهش میزان کدنویسی

کی و کجا باید از الگوهای طراحی استفاده کنیم؟

استفاده از الگوهای طراحی design patterns

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

نتیجه گیری

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

7Learn Experts
comment دیدگاه کاربران

add_circle ارسال دیدگاه

خوشحال میشیم دیدگاه و یا تجربیات خودتون رو با ما در میون بذارید :