دیزاین پترن چیست : الگوی طراحی یا Design Pattern چیست؟

دسته بندی: برنامه نویسی
سطح مقاله: ساده
زمان مطالعه: ۷ دقیقه
۱۹ فروردین ۱۳۹۸
فارسی
الگوهای طراحی
English
Design Patterns

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

الگوی طراحی یا دیزاین پترن چیست؟

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

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

نکته :

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

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

الگوهای طراحی اولین بار توسط کریستوف الکساندر (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

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

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

نتیجه گیری

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

نویسنده
عاشق برنامه نویس و نوشتن

نظرات کاربران

اولین دیدگاه این پست رو تو بنویس !

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

 
گزارش مشکل