دیزاین‌پترن (Design Pattern) چیست؟

دیزاین پترن‌ها یا الگوهای طراحی راه حل‌هایی برای رفع مشکلات نرم افزاری هستند، در واقع الگوهای طراحی مفاهیمی هستند که با استفاده از آنها می‌توانیم به بهترین نحو ممکن یک نرم افزار را توسعه دهیم در واقع الگوهای طراحی نشان دهنده بهترین شیوه های استفاده شده (Best Practices) توسط توسعه دهندگان باتجربه نرم افزارهای شی گرا است. الگوهای طراحی راه حل هایی برای مشکلات کلی است که توسعه دهندگان نرم افزار در طول توسعه نرم افزار با آن روبرو شده اند. این راه حل ها با آزمایش و خطا توسط بسیاری از توسعه دهندگان نرم افزار طی یک دوره زمانی قابل توجه به دست آمده است.

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

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

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

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

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

الگوهای طراحی اصطلاحات استانداردی را ارائه می دهند و مختص یک سناریوی خاص هستند. به عنوان مثال، الگوی طراحی Singleton به معنای استفاده از یک شی است، بنابراین تمام توسعه دهندگان آشنا به الگوی Singleton از یک شی استفاده می کنند و آنها می توانند به یکدیگر بگویند که این برنامه از الگوی Singleton پیروی می کند. در واقع وقتی برنامه نویس با Design Patternها آشنایی داشته باشد وقتی ساختار برنامه را ببیند متوجه میشود که چگونه باید تغییراتی را اعمال کند و یا در توسعه یک نرم افزار مشارکت کند. استفاده از این الگوها کمک میکند که تنها با ذکر ساختار کلی و نام الگو در داکیومنت، برنامه نویس با ساختار بخش مربوطه آشنا شود.

بهترین روش ها/ بهترین شیوه حل مساله ( Best Practices )

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

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

انواع الگوهای طراحی (Types of Design Patterns)

الگوهای طراحی در ۳ بخش زیر دسته بندی می‌شوند:

  1. Creational Patterns – الگوهای سازنده :ساز و کارهای مختلف ایجاد شی را ایجاد می کنند، که انعطاف پذیری و استفاده مجدد از کدها را افزایش می دهد. این ساختارها کمک میکنند که منطق اصلی ایجاد شی را پنهان کنیم و به برنامه انعطاف پذیری بیشتری در تصمیم گیری در مورد اینکه چه اشیایی برای یک مورد استفاده خاص باید ایجاد شوند ، می دهد.
  2. Structural Patterns – الگوهای ساختاری :چگونگی جمع آوری اشیا و کلاسها را به ساختارهای بزرگتر توضیح می دهد در حالی که این ساختارها را انعطاف پذیر و کارآمد نگه می دارد.
  3. Behavioral Patterns – الگوهای رفتاری :مربوط به الگوریتم ها و تعیین وظایف بین اشیا هستند.

 

لیست الگوهای طراحی / List of the design patterns

Creational Patterns

۱.۱. Abstract Factory
۱.۲. Builder
۱.۳. Factory Method
۱.۴. Pool
۱.۵. Prototype
۱.۶. Simple Factory
۱.۷. Singleton
۱.۸. Static Factory

Structural Patterns

۲.۱. Adapter / Wrapper
۲.۲. Bridge
۲.۳. Composite
۲.۴. Data Mapper
۲.۵. Decorator
۲.۶. Dependency Injection
۲.۷. Facade
۲.۸. Fluent Interface
۲.۹. Flyweight
۲.۱۰. Proxy
۲.۱۱. Registry

Behavioral Patterns

۳.۱. Chain Of Responsibilities
۳.۲. Command
۳.۳. Iterator
۳.۴. Mediator
۳.۵. Memento
۳.۶. Null Object
۳.۷. Observer
۳.۸. Specification
۳.۹. State
۳.۱۰. Strategy
۳.۱۱. Template Method
۳.۱۲. Visitor

More

۴.۱. Service Locator
۴.۲. Repository
۴.۳. Entity-Attribute-Value (EAV)

 

مطالعه بیشتر

Comments