این سایت برای ie9 طراحی نشده است

لطفا دستگاه خود را بچرخانید.

الگو های طراحی نرم افزار ( Design Pattern ) – مقدمه

۱۰ اردیبهشت ۱۳۹۶ حسین صداقت
بدون دیدگاه

به نام خدا

 

یکی از مباحثی که در ذهن برنامه نویسان من جمله خودم معمولا ازش یک غول ساخته میشه مبحث الگوی های طراحی یا design pattern  ها است.در حوزه برنامه نویسی همانند دیگر شاخه های علم کامپیوتر به دلیل اینکه منشا پیدایش و تولید آن اروپا و آمریکا هستش و به دلیل ضعف عملکرد ما در حوزه ی تولید محتوا و علم به زبان مادری ،منابع کمی جهت مطالعه و فهم مباحث این حوزه به زبان فارسی وجود داره و همین قضیه سبب میشه که بسیاری از افراد به دلیل عدم تسلط کافی به زبان انگلیسی قید یاد گرفتن برنامه نویسی یا افزایش علم خودشون در حوزه برنامه نویسی رو بزنند.

Design Pattern ها یا الگوی های طراحی هم از این قاعده مستثنی نیست و منبع فارسی که بتواند به طور کامل مبحث الگوی های طراحی رو توضیح بدهد در اینترنت وجود ندارد و همین امر سبب شد که اول از همه به جهت مبارزه با غول ذهنی !خودم شروع به مطالعه این بحث بکنم و دوم فهم خودم رو از الگوهای طراحی در اختیار بقیه قرار دهم.

من از تاریخ ۱۵ فروردین ۹۶ شروع به خواندن الگوهای طراحی یا همون design pattern  ها کردم.علت تصمیم من برای مطالعه design pattern  ها این بود که  یک برنامه نویس خوب برنامه نویسی هستش که به مفاهیم برنامه نویسی شی گرا و مشکلات و راه حل های آن آشنا باشد و اینکه مثلا یک برنامه نویس با ساختار یا syntax چند زبان برنامه برنامه نویسی آشنا باشه به تنهایی ارزش محسوب نمیشه.ما در برنامه نویسی همیشه درگیر حل مسئله هستیم.الگوی های طراحی هم در حقیقت راه حل هایی بهینه و تست شده برای مشکلات و مسائل پر تکرار برنامه نویسی شی گرا هستند.البته منظور از حل مسئله و مشکلات ،مباحث مربوط به الگوریتم های برنامه نویسی نیست.بلکه منظور مشکلات و مسائل از بعد مهندسی نرم افزار و ساختار کد نویسی می باشد .

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

در ادامه ما قصد داریم design pattern ها رو از روی مشهور ترین منبع آن یعنی از روی کتابی که نویسنده های آن به Gang of Four یا GoF مشهور هستند بررسی کنیم.GoF، بیست و سه ۲۳ design pattern را معرفی کرده اند که این design pattern ها خود پایه ی بقیه الگوی های طراحی نیز قرار گرفته اند.در ساختار Gang of Four الگوی های طراحی به سه دسته Creational ، Structural، Behavioral تقسیم شده اند.

الگوی های طراحی که ما قصد توضیح آن را داریم و GoF آن ها را معرفی کیده اند موارد زیر می باشد:

 

 Behavioral Patterns

۱-Chain of Responsibility

۲-Command

۳-Interpreter

۴-Iterator

۵-Mediator

۶-Memento

۷-Observer

۸-State

۹-Strategy

۱۰-Template Method

۱۱-Visitor

 

Structural Patterns

۱-Adapter

۲-Bridge

۳-Composite

۴-Descorator

۵-Facade

۶-Flyweight

۷-Proxy

Creational Patterns

 

۱-Abstract Factory

۲-Builder

۳-Factory Method

۴-Prototype

۵-Singleton

الگوهای behavioral الگوهایی هستند که در آن به روابط بین اشیا توجه می شود.

الگوی های Creational الگوهایی هستند که با مکانیزم های ایجاد شی سر و کار دارند و تلاش دارند که شی ها هب شیوه ای مناسب در موقعیت های مختلف ایجاد شوند.فرم ساده ایجاد شی در برنامه نویسی معمولا سبب ایجاد مشکلات در طراحی و همچنین افزایش پیچیدگی کد ما می شود.
الگوهای Structural الگوهایی هستند که سبب ایجاد طراحیی می شوند که در آن شناسایی روابط بین موجودیت یا  Entityبه سادگی امکان پذیر می شود.

 

 

 

برای مطلب اول فکر کنم همین توضیحات کلی کافی باشه و ان شاءلله در مطلب بعدی به صورت جزئی تر وارد مباحث design pattern ها می شویم  و از  behavioral pattern ها شروع کرده و الگوی Chain of responsibility را توشیح خواهیم داد.