


در دنیای برنامه نویسی شی گرا، Design Patterns ها از سوی افرادی طراحی و کشف شده است که اشراف کاملی به برنامه نویسی دارند. در واقع آنها این الگوها را کشف کرده اند تا بهترین، سریع ترین و درست ترین روش برای رسیدن به هدف در برنامه نویسی در کمترین زمان ممکن پیدا شود.
در طراحی نرم افزارها یک سری مشکلات ایجاد می شود که با نظم دهی تا حد زیادی رفع می شوند. Design Patternsیا دیزاین پترن در واقع نوعی الگوی طراحی است. از آنجایی که دنیای برنامه نویسی دنیای پیچیده ای است قصد داریم در مورد Design Patterns ها کمی ساده تر صحبت کنیم تا معنی این عبارت و مکان های درست استفاده از آن مشخص شود.
.jpg)
الگوی طراحی
Design Patterns در یک نگاه
زمانی که الگوهای طراحی را بشناسید متوجه خواهید شد که تمایز یک برنامه نویس حرفه ای و معمولی در چیست. الگوهای طراحی در واقع مجموعه راهکارهایی هستند که قرار است مشکلات برنامه نویسی را برطرف سازند. بیشترین استفاده از Design Patterns ها در دنیای برنامه نویسی شی گرا است. البته موضوع مهم اینکه این الگوها یک نوع شیوه درست از کد نویسی شی گرا را نشان می دهد و به نوعی به صورت مستقل وارد دنیای کدنویسی می شود و ارتباطی به معماری نرم افزارها ندارد.
Design Pattern ها به طور کلی شامل سه دسته عمومی هستند که قصد داریم در مورد هر یک صحبت کنیم.
الگوی طراحی سازنده
دسته اول از Design Patterns ها شامل الگوی طراحی سازنده هستند. این الگوها در واقع قرار است مشکلاتی که در سطح ایجاد شی در نرم افزار وجود دارد را برطرف سازد. یکی از زیر مجموعه های این الگو، سینگلتون است. در این الگو اطمینان حاصل می شود که یک کلاس تنها مربوط به یک شی است. در واقع زمانی که از این الگو استفاده شود دسترسی عمومی به شی که شامل کلاس مخصوص به خود است داده می شود. به زبانی ساده تر ساخت شی جدید به واسطه کلاس شی دیگر وجود ندارد. یعنی در آشپزی دو سرآشپز غذا را یا شور می کند و یا بی نمک!
حال موضوع جالبی که مطرح است اینکه چرا باید از این Design Patternسینگلتون استفاده کنیم؟ در واقع یکی از موضوعات مهم در نرم افزارها این است که یک شی بتواند با دیتابیس ارتباط برقرار کند. پس باید اطمینان حاصل شود که سایر شی ها در این راستا دخالتی ندارند. وقتی از الگوی سینگلتون استفاده می شود برای دسترسی به دیتابیس دیگر نیاز به ساختن شی جدید نخواهد بود.
نحوه استفاده از این تابع نیز بسیار آسان است و تنها نوشتن new و پس از استفاده از واژه getInstance یعنی شی مورد نظر در برنامه به دیتابیس دسترسی پیدا کند و تمام!
در دسته الگوی طراحی سازنده یک مورد دیگر به عنوان الگوی طراحی کارخانه وجود دارد. این گزینه زمانی کاربرد دارد که قرار است یک اپ بسیار بزرگ طراحی و اجرا شود. مشخص است که چنین اپلیکیشن هایی به تعداد زیاد کلاس دارند و میزان شی و نمونه ساخته شده گسترده هستند. وظیفه الگوی طراحی کارخانه ایم است که بتواند اشیا از کلاس های مختلف بسازد.
این الگو زمانی مناسب است که قرار است چندین کلاس از یک کلاس ارث بری داشته باشد. در چنین شرایطی از آن کلای نمونه یا شی نیز ساخته می شود. دنیای دیزاین پترن ها بسیار گسترده هستند و هر یک شامل شرایط خاص خود می شود. یکی دیگر از الگوهای مربوط به طراحی سازنده شامل الگوی طراحی Prototype است. در این روش برای ایجاد شی جدید از سایر اشیای موجود کپی گرفته می شود. در واقع بین شی جدید و کلاسی که از آن ساخته می شود می تواند یک شی جدید ایجاد کرد.
.png)
الگوی طراحی
الگوی طراحی ساختاری
دومین دسته از دیزاین پترن ها مربوط به الگوی طراحی ساختاری است. در این روش یک سری از راه حل ها وجود دارد که سعی می کند مشکلات مربوط به توسعه پذیری نرم افزارها را برطرف سازد. به زبانی ساده تر این الگوها بین کلاس و شی ارتباط برقرار گرفته و آنها را مدیریت می کند.
Adapter:
یکی از الگوهای طراحی ساختاری Adapter نامیده می شود. در واقع این الگو وظیفه تبدیل را به عهده دارد. رابط یک کلاس به رابط دیگر که مورد تقاضای کاربر است تبدیل می شود. برخی از اشیا هستند که رابط های نامناسبی دارند و این موضوع سبب شده تا ناسازگاری ایجاد شود که در نهایت Adapter می تواند این مشکل را برطرف سازد.
Facade:
این الگو باعث می شود که استفاده از زیر سیستم ها ساده تر باشند و رابطی جداگانه در نظر میگیرد که سبب می شود مجموعه ای از رابط ها در زیر سیستم وجود داشته باشند.
Bridge:
الگوی دیگری وجود دارد که سبب جداسازی مفهوم مجرد از پیاده سازی می شود و در نهایت روالی مطرح می شود که هر دو گزینه به صورت مستقل قابل تغییر هستند.
Flyweight:
این الگو منابع را اشتراک گذاری می کند به طوری که تعداد زیادی از اشیای سبک بتوانند کارایی درستی داشته باشند.
Composite:
یک سری اشیا وجود دارد که به صورت منفرد کار می کند و سری دیگر نیز به صورت مرکب هستند این الکو شامل یک ساختار درختی است که می تواند پردازش درستی از این بخش داشته باشد.
Decorator:
قابلیت انعطاف برای این الگو بسیار زیاد است به طوری که می تواند زیر کلاس های متعددی برای یک کلاس ایجاد نماید.
.jpg)
الگوی طراحی
معرفی الگوهای رفتاری
مجموعه الگوهای رفتاری به صورتی طراحی شده اند که سبب می شود وضعیت تعامل در بین اشیا رویکرد بیشتری داشته باشد.
Chain of responsibility:
وقتی درخواستی داده می شود نیاز است که اشیای بیشتری بتوانند به آن درخواست پاسخ دهند تا تاخیر کم شود به این ترتیب این الکو به بیش از یک شی اجازه می دهد تا بتواند برای پاسخ آماده باشد و در واقع زنجیره ای شکل می گیرد تا تاخیر به حداقل برسد.
Command:
این الگو وظیفه کپسوله سازی را برعهده دارد. در واقع این اجازه فراهم می شود تا مشتری بتواند پارامتر خوبی برای درخواست های مختلف داشته باشد. از سوی دیگر رویکرد صف بندی نیز به دقت صورت می گیرد و شرایط به صورتی است که می تواند برگشت نیز داشته باشد.
Mediator:
مجموعه ای از اشیا وجود دارد که باید باهم تبادل داشته باشند به این ترتیب این الگو میتواند نحوه تبادل را تنظیم نماید.
مزایای استفاده از Design Patterns
در برنامه نویسی شی گرا استفاده زیاد از کلاس ها و ایجاد اشیای جدید به صورت مکرر سبب پیچیدگی برنامه نویسی می شود و به طور کلی Design Patterns اصول برنامه نویسی شی گرایی را شناسایی می کنند. یکی از مهمترین مزایای Design Pattern ها افزایش مقیاس پذیری است به طوری که رویکرد مقیاس پذیری با دردسر کمتری دنبال می شود. همینطور اجازه می دهد که توسعه پذیری نیز افزایش بیشتری داشته باشد.
موضوع دیگر عدم انعطاف برخی از کدها است که نیاز به افزایش انعطاف پذیری بوده و باید سطح منعطف سازی به شکل روتینی دنبال شود. در توسعه نرم افزار کند بودن بیش از حد دردسرساز است و D Pattern ها سبب می شود تا سرعت توسعه نرم افزارها نیز بیشتر شود. از سوی دیگر سبب می شود تا خطاها و مشکلات به حداقل برسد و همینطور میزان کدنویسی را نیز کاهش می دهد.
.jpg)
الگوی طراحی
کجا از Design Patterns استفاده کنیم؟
در ابتدا نیاز است که مشکلات برنامه نویسی مشخص و دسته بندی شود تا بتوان بررسی کرد که هر یک از Design Patternها برای چه مشکلی استفاده می شوند و چطور قابل اجرا هستند.
کاربرد Design Patterns ها
در دنیای برنامه نویسی شی گرا، D Pattern ها از سوی افرادی طراحی و کشف شده است که اشراف کاملی به برنامه نویسی دارند. در واقع آنها این الگوها را کشف کرده اند تا بهترین، سریع ترین و درست ترین روش برای رسیدن به هدف در برنامه نویسی در کمترین زمان ممکن پیدا شود درست مثل زمانی که قرار است در یک شهر غریب به یک مقصد برویم اما نمی دانیم سریع ترین وسیله حمل و نقل، بهترین مسیر و ارزانترین قیمت کدام است در چنین شرایطی به سراغ فردی می رویم که اهل شهر مورد نظر است و به نوعی اشراف کامل به همه موارد دارد. Design Pattern ها نیز همین کار را می کنند جلوی پیچیدگی های بی مورد را می گیرند و به نوعی نقش تدوینگر را ایفا می کنند.
D Pattern ها کمک می کنند تا برنامه نویسی درگیر موارد حاشیه ای نشود. این کار سبب می شود تا هر آنچه که نوشته می شود قالب و سقف مخصوص به خود را داشته باشد. هر چه برنامه بزرگتر باشد رعایت قوانین Design Pattern اثربخش تر است به طوری که سبب می شود پارامترهای موفق تری وارد دنیای Design Pattern ها شود.
از سوی دیگر یک موضوع بسیار مهم مطرح است و آن هم اینکه چرا باید در دنیای برنامه نویسی برخی از عبارات به صورت افراطی تکرار شوند در صورتی که با یک بار نوشتن و استفاده چندین باره، برنامه اجرا می شود. هرچه اصول الگوهای طراحی را بهتر شناسایی کنید می توانید استفاده آسانتری از هر یک درست در مکان مناسب آن داشته باشید. در دنیای برنامه نویسی الگوی طراحی می تواند عملکرد مناسب به خود را داشته باشد.
.jpg)
الگوی طراحی
کلام آخر
اگر قرار است برنامه ای بنویسید که فکر می کنید 100 ها کلاس نیاز دارد و هزاران شی قطعاً Design Patternها را جدی بگیرید. این الگوها به کدنویسی شما شکل و استایل مناسبی می دهند و بسیار تاثیرگذار هستند. این الگوها می توانند به صورتی اجرا شوند که شخص بتواند بهترین اجرا را به نتیجه برساند و به نوعی قیمه ها را در ماست نریزد!
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 10 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی می باشد
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690


![جهت اطلاع از آموزش ها و اطلاع رسانی های جاواپرو عضو کانال بله شوید[ اینجا کلیک کنید]](https://dl.javapro.ir/image/marketing/javapro_bale3.png)
![مشاهده دوره های مرتبط با جاوا ، Spring و میکروسرویس[کلیک کنید]](https://dl.javapro.ir/image/marketing/esf_co.png)
![مشاهده جزییات و سرفصل های دوره Spring Batch [اینجا کلیک کنید]](https://dl.javapro.ir/spring_batch/springbatch_pop.png)


![مشاهده سرفصل ها و ثبت نام در دوره Spring Boot جاواپرو [کلیک کنید]](https://dl.javapro.ir/image/marketing/banerday1403springboot.png)
























.png)
-min.png)
-min.png)
-min.png)


-min.png)









-min.png)

.jpg)