دیزاین پترنها یا الگوهای طراحی راه حلهایی برای رفع مشکلات نرم افزاری هستند، در واقع الگوهای طراحی مفاهیمی هستند که با استفاده از آنها میتوانیم به بهترین نحو ممکن یک نرم افزار را توسعه دهیم در واقع الگوهای طراحی نشان دهنده بهترین شیوه های استفاده شده (Best Practices) توسط توسعه دهندگان باتجربه نرم افزارهای شی گرا است. الگوهای طراحی راه حل هایی برای مشکلات کلی است که توسعه دهندگان نرم افزار در طول توسعه نرم افزار با آن روبرو شده اند. این راه حل ها با آزمایش و خطا توسط بسیاری از توسعه دهندگان نرم افزار طی یک دوره زمانی قابل توجه به دست آمده است.
شما خیلی وقتها بدون آنکه از این الگوها آگاهی داشته باشید به صورت کاملا ناخواسته از این الگوها برای رفع مشکلاتتون استفاده کرده اید پس این نمایانگر این است که این الگوهها راه حلهای رفع مشکلات و راه حلهای پیاده سازی نرم افزار به سبکی است که بتوان آن را در آینده توسعه داد.
در مهندسی نرمافزار، الگوی طراحی یک راهحل عمومی قابل تکرار برای مشکلات متداول در زمینه طراحی نرمافزار است. الگوی طراحی، یک طراحی تمامشده نیست که به صورت مستقیم بتواند تبدیل به کد منبع یا ماشین شود؛ بلکه، یک توضیح یا قالب برای حل یک مسئله در شرایط مختلف است. الگوها در واقع بهترین روش ممکن هستند که یک برنامهنویس میتواند در هنگام طراحی یک برنامه برای حل مشکلاتش از آنها استفاده کند. (ویکی پدیا)
استفاده از الگوهای طراحی
بستر مشترک برای توسعه دهندگان
بهترین روش ها/ بهترین شیوه حل مساله ( Best Practices )
Design Patternها در طی یک دوره طولانی مدت تکامل یافته اند و بهترین راه حل ها را برای مشکلات خاصی که در طول توسعه نرم افزار با آن روبرو شده اند ارائه می دهند. یادگیری این الگوها به Developerهای کم تجربه کمک می کند تا طراحی نرم افزار را به روشی آسان و سریع یاد بگیرند. همچنین با استفاده از این الگوها میتوانیم مطمئن شویم که در آینده توسعه نرم افزار کم هزینه تر و سریعتر است و همچنین استفاده از این الگوها طول عمر نرم افزار را افزایش میدهد.
نکته: توجه کنید که الگوهای طراحی راه حل هایی برای چالشها و مشکلات هستند، نه راه حلهایی برای پیدا کردن مشکلات برنامه نویسی، بنابراین زیاده روی نکنید و دقت کنید از الگوی درست در جای درست استفاده کنید. استفاده نادرست از الگوهای طراحی به مشکلات ما می افزاید.
انواع الگوهای طراحی (Types of Design Patterns)
الگوهای طراحی در ۳ بخش زیر دسته بندی میشوند:
- Creational Patterns – الگوهای سازنده :ساز و کارهای مختلف ایجاد شی را ایجاد می کنند، که انعطاف پذیری و استفاده مجدد از کدها را افزایش می دهد. این ساختارها کمک میکنند که منطق اصلی ایجاد شی را پنهان کنیم و به برنامه انعطاف پذیری بیشتری در تصمیم گیری در مورد اینکه چه اشیایی برای یک مورد استفاده خاص باید ایجاد شوند ، می دهد.
- Structural Patterns – الگوهای ساختاری :چگونگی جمع آوری اشیا و کلاسها را به ساختارهای بزرگتر توضیح می دهد در حالی که این ساختارها را انعطاف پذیر و کارآمد نگه می دارد.
- 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)