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

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

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

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

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

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

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

 

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

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

  • Singleton
  •  Factory Method
  • Prototype
  • Abstract Factory
  • Builder
  • Object Pool

الگوهای طراحی ساختاری(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)
  • افزایش سرعت توسعه نرم افزارها
  • کاهش خطاها و مشکلات
  • کاهش میزان کدنویسی

 

جمع‌بندی 23 نوع الگوی طراحی (Design Pattern)

انواع دیزاین پترن و کاربرد آن‌ها

نوع دیزاین پترن نام دیزاین پترن کاربرد دیزاین پترن
ایجادی Singleton یک کلاس تنها یک نمونه از خود می‌تواند داشته باشد و امکان ساخت بیش از یک نمونه از آن را محدود می‌کند.
ایجادی Factory Method این الگو برای ایجاد یک روش متفاوت برای ایجاد نمونه‌های یک کلاس و اجازه دادن به زیرکلاس‌ها برای تعیین نوع نمونه‌های ایجاد شده، استفاده می‌شود.
ایجادی Prototype این الگو برای ایجاد نمونه‌های جدید از یک کلاس با استفاده از کپی‌برداری از یک نمونه موجود، بدون نیاز به ساخت مجدد آن کلاس، استفاده می‌شود.
ایجادی Abstract Factory برای ایجاد یک خانواده از اشیاء مرتبط و متعلق به یک مجموعه موضوعی با استفاده از یک واسط مشترک، بدون وابستگی به کلاس‌های خاص، استفاده می‌شود.
ایجادی Builder این الگو فرایند ساخت یک شیء را از نمایش آن جدا کرده تا بتوان همان فرایند ساخت را برای ایجاد نمایش‌های مختلف بکار برد.
ایجادی Object Pool برای بهبود عملکرد و کارایی برنامه با استفاده مجدد از اشیاء ساخته شده قبلی، به جای ساخت مجدد آن‌ها، از اشغال‌سازی‌های سنگین منابع دوری می‌کند.
ساختاری Adapter برای اتصال و تبدیل رابط یک کلاس به رابطی دیگر که ساختار و نحوه عملکرد آن متفاوت است، استفاده می‌شود و امکان همکاری بین اشیائی که قبلاً بخاطر داشتن رابط‌های ناسازگار نمی‌توانستند با هم کار کنند را فراهم می‌سازد.
ساختاری Decorator این الگو برای افزودن ویژگی‌ها و عملکردهای جدید به یک شیء بدون تغییر در رابطه‌ی آن شیء، استفاده می‌شود.
ساختاری Facade این الگو برای ایجاد یک رابط ساده‌تر و یکپارچه‌تر برای دسترسی به یک زیرسیستم پیچیده‌تر، استفاده می‌شود.
ساختاری Bridge برای جدا سازی یک مجموعه از کلاس‌ها از رابط آن‌ها و امکان تغییر آن‌ها به صورت مستقل، استفاده می‌شود.
ساختاری Composite این الگو برای ایجاد ساختاری سلسله‌مراتبی از اشیاء به صورت گرافیکی و امکان استفاده یکسان از اشیاء تکی و گروهی، استفاده می‌شود.
ساختاری Flyweight برای کاهش مصرف حافظه و بهبود عملکرد با به اشتراک گذاری اشیاء کوچک و مشابه در سطح سیستم، استفاده می‌شود.
ساختاری Proxy برای ایجاد یک نماینده‌ای بین کاربر و یک شیء دیگر برای کنترل دسترسی، اضافه کردن قابلیت‌های اضافی و مدیریت عملکرد، استفاده می‌شود.
رفتاری Chain of responsibility این الگو برای ارائه روشی برای پردازش درخواست‌ها توسط یک زنجیره از شیء‌ها و امکان انتقال درخواست بین آن‌ها، استفاده می‌شود.
رفتاری Strategy برای انتخاب یکی از چندین روش متفاوت برای انجام یک عملیات خاص و قابل تعویض آن، استفاده می‌شود.
رفتاری Iterator این الگو برای ارائه روشی برای دسترسی به عناصر یک مجموعه به صورت مرتب و متوالی بدون افشای جزئیات ساختار داده، استفاده می‌شود.
رفتاری Command یک درخواست را به صورت یک شیء کپسول‌سازی می‌کند و این امکان را فراهم می‌سازد تا مشتری‌ها را با درخواست‌های متفاوت پارامتردهی، صف بندی یا Log کرده و قابلیت برگشت به عقب را فراهم می‌کند.
رفتاری Mediator این الگو برای کاهش وابستگی بین اجزای یک سیستم و ایجاد یک شیء واسطه برای مدیریت و ارتباط بین آن‌ها، استفاده می‌شود.
رفتاری Memento برای ذخیره و بازیابی وضعیت یک شیء بدون نیاز به افشای جزئیات پیاده‌سازی، استفاده می‌شود.
رفتاری Observer یک نوع وابستگی یک‌به‌چند بین اشیاء تعریف کرده بطوری که وقتی یک شیء حالتش را تغییر داد، تمام اشیاء وابسته به آن خبردار شده تا آن‌ها نیز خود را با آن تغییر هماهنگ کنند.
رفتاری State این الگو اجازه می‌دهد تا یک شیء هنگامی که حالتش عوض شد، رفتارش را تغییر دهد. اشیاء از این نوع رفتار کلاسی که در آن قرار دارند را تغییر می‌دهند.
رفتاری Template Method اسکلت کلی یک الگوریتم را تعریف کرده و پیاده‌سازی بعضی قدم‌های آن را به زیر کلاس‌ها محول می‌کند. این الگو امکان تغییر بعضی از قدم‌های یک الگوریتم را بدون تغییر در ساختار کلی الگوریتم به زیر کلاس‌ها می‌دهد.
رفتاری Visitor

این الگو برای اضافه کردن عملیات‌های جدید به یک ساختار شیءی بدون تغییر در کلاس‌های مربوطه و جداسازی عملیات از ساختار، استفاده می‌شود.

نتیجه گیری

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

 

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

انجام پروژه دورکاری اینترنتی و کاریابی آنلاین و استخدام فریلنسر و دورکار

دسته بندی ها