الگوهای طراحی یا design patterns یک سری روش برای حل مشکلات مشخص هست.استفاده از این الگو ها یکسری مزایایی دارد که به برخی از آن اشاره میکنم
نکته مهم:همیشه مجبور به استفاده از الگوهای طراحی نیستید.
در کل 23 الگو وجود دارد که به 3 دسته کلی تقسیم شده اند.
الگوهای ساختاری Structural Patterns : این الگوها روابط بین اشیا و مشارکت آنها برای تشکیل اشیا پیچیده تر است.
الگوهای ایجادی Creational Patterns : این الگوها به ساخت اشیا و ارجاع به آنها کربوط میشوند.
الگوهای رفتاری Behavioural Patterns : این الگوها به ارتباط بین اشیا به ویژه از دیدگاه مسئولیت و الگوریتم مربوط میشوند.
این الگو ها به روابط و تعامل بین اشیا و ترکیب شدن آنها برای شکل دادن سازه ها و اشیا پیچیده تر تمرکز دارد. الگوهای ساختاری میتوانند هنگام طراحی یک سیستم یا پس از آن در حین نگهداری و توسعه استفاده شوند.برخی از این الگوها به ویژه پس از سپری شدن چند چرخه حیات نرم افزار و اعمال تغییرات جدیدی به آن که از پیش دیده نشده بود مفید هستند.
اهداف کلی این الگو ها:
این الگوها به ساخت اشیا و ارجاع به آنها پرداخته و با انتزاعی کردن روند نمونه سازی از کلاس ها، مسئولیت این کار را خودشان برعهده میگیرد. یعنی دیگر نیازی نیست کلاینت، خودش به طور صریح از یک کلاس نمونهسازی کند. این الگو و اتصال بین کلاس ها را تضعیف کرده و loose-coupling(اتصال ضعیف و سست) را ترویج میدهند و با متمرکز سازی مسئولیت ایجاد اشیا پیچیده در یک نقطه ی متمرکز ، پایبندی به اصول (تنها یک مسولیت SRP - (Single responsibility Principle و(Separation of Concerns جدا سازی دغدغه ها) - SoC را فراهم می کنند.
هدف این الگوها این است که یک سیستم را از چگونگی ساخت، تشکیل و ارائه اشیاء شان جدا کنند. این الگوها انعطاف پذیری سیستم را از نظر اینکه چه کسی، چگونه و چه هنگام، فلان شی را ایجاد می کند افزایش می دهند.الگوهای creational دانش این که چه کلاس هایی توسط سیستم استفاده می شود را کپسوله کرده و جزییات نمونه سازی از آنها را پنهان میکنند.
مطلب مهمی که برنامه نویس باید درک کند این است که ساخت یک سیستم بر اساس وراثت و نمونه سازی مستقیم از کلاس ها باعث سفت و سخت شدن سیستم و افزایش
tight coupling(اتصال محکم و قوی) می شود.هدف الگوهای creational این است که این اتصال قوی و نزدیک (close coupling) را بشکنند.
اهداف کلی این الگو و بدین صورت است :
نقطه تمرکز الگوهای structural و creational ایجاد اشیا است.اما الگوهای رفتاری به جنبه دیگری می پردازند. در این الگوها به الگوریتم ها، مبادله اطلاعات و رفتار کلاس ها توجه می شود. هدف این الگوها پاسخگویی به سناریوهای رایجی است که در آنها به توان رفتار یک کلاس را بر اساس یک الگو تعریف کرد. الگوهای رفتاری نحوه ی بیان تقسیم عملیات به این کلاس ها را تعریف کرده و چگونگی ارتباط بین آنها را بهبود میدهد.
هدف کلی این الگو و بدین صورت است: