تصمیم گرفتم در مورد الگوهای طراحی(Design patterns) حرف بزنم و کمکم شروع کنم یکییکی بررسیشان کنم.
یکی از مهمترین مواردی که ما برنامهنویسها باید بدانیم الگوهای طراحی هست. البته قبلش باید با مفاهیم برنامهنویسی شیء گرا به خوبی آشنا باشیم.
الگوهای طراحی چی هستند و چرا باید یادشون بگیریم و ازشون استفاده کنیم؟
اگر خیلی ساده بخواهم بگوییم الگوهای طراحی زبان مشترک بین برنامهنویسها هستند. بهطور مثال اگر من در قسمتی از برنامهام از الگوی طراحی A استفاده کرده باشم، کافی است به یک برنامهنویس دیگر بگوییم که من این قسمت را از الگوی طراحی A استفاده کردهام، همین کافی است تا برنامهنویسی که با کد من آشنایی ندارد متوجه کد من بشود.
وقتی برنامهها بزرگ میشوند، پیچیدگی آنها نیز زیاد میشود. الگوهای طراحی ایجادشدهاند که این پیچیدگی را کاهش بدهند. البته این مهمه که هر جا که واقعاً نیاز هست و بهدرستی از الگوهای طراحی استفاده کنیم در غیر این صورت خود الگوهای طراحی عامل پیچیدگی میشوند!
الگوهای طراحی راهحلهای هستند که برای یک مسئله مشخص ایجادشدهاند البته نه یکراه حل کامل، ما باید بر اساس نیازمندیهایمان از آنها استفاده کنیم.
الگوهای طراحی بر اساس کاربرد به سه دستهی اصلی تقسیم میشوند و هر دسته دارای زیر دستههای مختلفی است.
Creational Patterns
Abstract Factory
Prototype
Factory Method
Builder
Singleton
Structural Patterns
Decorator
Adapter
Facade
Proxy
Bridge
Flyweight
Composite
Behavioral Patterns
Observer
Chain Of Responsibility
Interpreter
State
Command
Mediator
Template Method
Memento
Visitor
به مرور تک تک این الگو های را بررسی میکنم و برای هر کدامشان یک پست جداگانه میزارم.
معروفترین منبع الگوهای طراحی، ۲۳ الگوی طراحی Gang of Four هست. چهار نویسنده که کتاب Design Patterns: Elements of Reusable Object-Oriented Software را تألیف کردهاند و فکر میکنم معروفترین و معتبرترین کتاب در زمینهی الگوهای طراحی هست.
اما من برای برنامه نویسان جاوا کتاب Head First Design Patterns پیشنهاد میدم. کتابی که به نظرم خیلی ساده و روان الگوهای طراحی را توضیح میده.