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