Design Patterns الگوهایی برای طراحی یک نرم افزار توسعه پذیر (Scalable) و قابل نگهداری (Maintainable) میباشند.
الگو یک تکه کد مشخصی نیست که در برنامه کپی کنید، بلکه یک راه حل کلی برای حل مسئله ارائه میدهد.
اغلب الگوریتم و الگو را با هم اشتباه میگیرند.
به این دلیل که هر دو با ارائه راه حل در تلاش برای حل مسئله هستند. الگوریتم برای حل مسئله از یک چارچوب روشن و مشخص پیروی میکند.
اما یک الگو در Design Patterns میتواند دو راه حل متفاوت ، در دو مسئله مختلف داشته باشد.
اغلب الگو ها در Design Patterns به شکل فرمول هستند، به این معناست که هر نفر میتواند با الهام گرفتن از ساختار آن، یک الگوی جدید ایجاد کند.
اما به طور کلی یک الگو از بخش های زیر تشکیل میشود:
Behavioral همچنان به دو بخش زیر تقسیم میشود:
Object Scope این بخش روابط بین اشیا در زمان اجرا (runtime) را مدیریت میکند.
Class Scope این بخش روابط بین کلاس ها در زمان کامپایل (compile) را مدیریت میکند.
شاید شما طی سال هایی که برنامه نویسی کردهاید، به روش های مختلفی بدون حتی انتخاب یک الگو، کد برنامه را نوشته و اجرا کرده باشید.
پس چرا باید برای یادگرفتن این Design Patterns زمان صرف کنید؟ دو دلیل مشخص این ابهام را برای شما رفع میکند.
الگوها (Design Patterns) در بعضی از مواقع نیز میتوانند برای یک پروژه مضر هم باشند، در زیر به چند مورد از آنها اشاره میکنیم.
Abstract:C
Factory:S
Decorator:C
Prototype:S
Adapter:S
Facade:S
Proxy:S
Bridge:C
Factory:B
Observer:C
Builder:S
Flyweight:C
Singleton:B
ChainOfResponsibility:B
Interpreter:B
State:B
Command:B
Mediator:B
TemplateMethod:S
Composite:B
Memento:B
Visitor:B
Design Patterns به صورت پیش فرض سودمند و کاربردیست.
زمانی میتوانید راه حل درست را انتخاب کنید که به تمام الگو ها و ساختار آنها تسلط کافی داشته باشید.
در پست های بعدی، تمام الگوهای فوق را با تمرکز روی جزییات و با ذکر مثال کاربردی بررسی خواهیم داد.