دیزاین پترن در جاوا چیست؟ – کاربرد و انواع به زبان ساده


«دیزاین پترنها» (Design Patterns) یکی از مباحث مهم در توسعه نرمافزار محسوب میشوند. دیزاین پترنها یا الگوهای طراحی در قلمرو معماری نرمافزار قرار نمیگیرند و تنها شامل مجموعه راهحلهای استاندارد جهت رفع مشکلات رایج موجود در دنیای برنامه نویسی نرمافزار هستند. آشنایی با دیزاین پترن در جاوا مزایای زیادی همچون کاهش زمان توسعه، کاهش هزینه و افزایش خوانایی کد را به دنبال دارد. بر همین اساس در این مطلب از مجله فرادرس به این سوال پاسخ داده خواهد شد که دیزاین پترن در جاوا چیست و چه کاربردی دارد.
با مطالعه این مطلب ضمن آشنایی با دستهبندیهای موجود برای دیزاین پترنها با انواع آنها نیز آشنا خواهید شد. همچنین، نقاط مثبت و نحوه عملکرد هر کدام از دیزاین پترنها نیز در این مطلب مورد بررسی قرار گرفته است. علاوه بر این، برای درک بهتر برخی از دیزاین پترنهای پیچیده مثالی از کاربرد آنها در دنیای واقعی آورده شده است. پس تا انتهای این مطلب با مجله فرادرس همراه باشید تا اطلاعات خود را در این رابطه افزایش دهید.
در این مطلب ابتدا یاد میگیریم که دیزاین پترن در جاوا چیست و چه مزایایی دارد چراکه اهمیت بالایی در توسعه نرمافزار دارند. در ادامه، مزایای استفاده از دیزاین پترن را یاد میگیریم و انواع آن را بررسی میکنیم. در انتهای مطلب نیز چند دیزاین پترن متفرقه را مرور میکنیم. پس اگر میخواهید با مبحث دیزاین پترن در جاوا آشنا شوید، بهتر است تا انتهای این مطلب با ما همراه باشید.
دیزاین پترن در جاوا چیست؟
الگوهای طراحی یا اصطلاحاً دیزاین پترنها راهحلهایی ساختاری برای مشکلاتی هستند که مهندسان نرمافزار اغلب با آنها مواجه میشوند. بسیاری از افراد تازهوارد به دنیای توسعه نرمافزار دیزاین پترن را معادل کد در نظر میگیرند که این موضوع کاملاً اشتباه است. در واقع، دیزاین پترن دستورالعملی است که چگونگی مقابله با مشکلات رایج و نحوه پیادهسازی راهحل برای آنها را شرح میدهد.
استفاده از دیزاین پترنها در فرایند توسعه بسیار توصیه میشود، زیرا این الگوهای طراحی با ارائه راهحلهای استاندارد و آزمایش شده به بهبود خوانایی کد کمک میکنند.
هدف از پیدایش دیزاین پترن در جاوا چیست؟
رفع مشکلات موجود در زبانهای «برنامه نویسی شیگرا» (Object-Oriented Programming) از اهداف اصلی طراحی این الگوها بوده است. در زبان برنامه نویسی جاوا نیز به عنوان یکی از محبوبترین و با سابقهترین زبانهای برنامه نویسی شیگرا از دیزاین پترنهای مختلفی استفاده میشود. بر همین اساس در این مطلب دیزاین پترن در جاوا به همراه نمونهها و مثالهای مختلف مورد بررسی قرار خواهد گرفت.

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

بهبود قابلیت استفاده مجدد و کاهش هزینه
استفاده از الگوهای طراحی قابلیت استفاده مجدد کد را بهبود میبخشد که این امر نیز منجر به داشتن کدی قوی با قابلیت نگهداری بالا میشود. در نتیجه، «هزینه مالکیت محصول» (Total Cost of Ownership) نرمافزاری نیز کاهش مییابد.
افزایش خوانایی کد
استفاده از الگوهای طراحی با توجه به ساختار منسجم و یکپارچه آنها درک و اشکالزدایی از کد را آسانتر میکند. این امر سرعت توسعه را نیز افزایش میدهد، زیرا اعضای جدید تیم برنامه نویسی نیز میتوانند کدهای نوشته شده را به آسانی درک میکنند.
انواع دیزاین پترن در جاوا
تا کنون ۲۶ مورد دیزاین پترن مختلف در زبان جاوا معرفی شده است. هر چند یادگیری و آشنایی با این تعداد زیاد کمی دلهرهآور به نظر میرسد، اما نیازی به یادگیری تمام دیزاین پترنهای موجود در جاوا نیست.
برای درک بهتر، این الگوهای طراحی به ۳ دسته کلی تقسیم شدهاند. در ادامه، دستهبندی دیزاین پترنهای موجود در جاوا ارائه شده است.
- «دیزاین پترنهای سازنده» (Creational Design Patterns)
- «دیزاین پترنهای ساختاری» (Structural Design Patterns)
- «دیزاین پترنهای رفتاری» (Behavioral Design Patterns)
دیزاین پترنهای سازنده
هدف اصلی از توسعه دیزاین پترنهای سازنده رفع مشکلات مربوط به ایجاد شی در برنامه نویسی بوده است. الگوهای طراحی سازنده راهحلهایی را به منظور نمونهسازی از یک شی به بهترین شکل ممکن در موقعیتهایی خاص ارائه میدهند. مهمترین دیزاین پترنهای سازنده در جاوا به شرح زیر است.
- دیزاین پترن Singleton
- دیزاین پترن Factory
- دیزاین پترن Abstract Factory
- دیزاین پترن Builder
- دیزاین پترن Prototype
در ادامه این بخش از نوشته هر کدام از دیزاین پترنهای معرفی شده در بالا به طور کامل مورد بررسی قرار خواهد گرفت.
دیزاین پترن Singleton در جاوا
الگوی طراحی Singleton یک دیزاین پترن در جاوا است که استفاده از آن نمونهسازی از کلاس را در برنامه محدود میکند. منظور از محدود کردن نمونهسازی این است که از هر کلاس تنها میتوان یک نمونه یا شی ایجاد کرد. علاوه بر این، الگوی طراحی Singleton تنها یک نقطه دسترسی سراسری به شی مورد نظر ایجاد میکند.
قواعد Singleton در جاوا چیست؟
الگوی طراحی Singleton در جاوا بر مبنای یکسری اصول اساسی استوار است. در ادامه، مهمترین قواعد مربوط به این الگوی طراحی آورده شده است.
- این الگوی طراحی با محدود کردن نمونهسازی از کلاس تضمین میکند که تنها یک نمونه از کلاس مورد نظر در «ماشین مجازی جاوا» (Java Virtual Machine) وجود دارد.
- کلاسهای طراحی شده مبتنی بر الگوی Singleton تنها یک نقطه سراسری برای دسترسی به نمونه ایجاد شده از کلاس فراهم میکنند.
- دیزاین پترن Singleton در پیادهسازی سایر الگوهای طراحی نظیر Facade ،Prototype ،Abstract Factory و سایر موارد کاربرد دارد.
- در طراحی تعدادی از کلاسهای موجود در هسته اصلی جاوا نظیر java.lang.Runtime وjava.awt.Desktop از دیزاین پترن Singleton استفاده میشود.
مزایای Singleton در جاوا
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- کنترل نمونههای کلاس: دیزاین پترن Singleton از نمونهسازی مکرر اشیا از کپیهای خود جلوگیری به عمل میآورد. همچنین، این الگوی طراحی اطمینان حاصل میکند که همه اشیا به یک نمونه واحد از کلاس دسترسی داشته باشند.
- بهبود سازگاری و انعطافپذیری برنامه: کنترل فرایند نمونهسازی توسط کلاس سبب میشود تا انعطافپذیری لازم برای تغییر فرایند نمونهسازی وجود داشته باشد.
- کاهش میزان استفاده از حافظه: با ایجاد هر شی از کلاس مقدار مشخصی از فضای حافظه اشغال میشود. در نتیجه، ایجاد چندین شی از کلاس به معنای اشغال فضای به مراتب بیشتری از حافظه است. در دیزاین پترن Singleton هر کلاس تنها یک شی میتواند داشته باشد. بنابراین، استفاده از این الگوی طراحی موجب صرفهجویی در حافظه میشود.
دیزاین پترن Factory در جاوا
دیزاین پترن Factory زمانی مورد استفاده قرار میگیرد که یک سوپرکلاس با چندین زیرکلاس در برنامه وجود دارد و باید بر اساس ورودی تنها یکی از کلاسها برگشت داده شود. این الگوی طراحی مسئولیت نمونهسازی و ساخت اشیا از کلاسهای مختلف را به کلاس Factory منتقل میکند. علاوه بر این، امکان استفاده از دیزاین پترن Factory و Singleton به صورت همزمان در برنامه وجود دارد.

مزایای استفاده از دیزاین پترن Factory در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- رویکرد اصلی دیزاین پترن Factory ایجاد اینترفیسهای مختلف به جای پیادهسازی کد است.
- به کمک این الگوی طراحی فرایند نمونهسازی و ساخت اشیا از کلاسهای مختلف تسهیل میشود.
- به دلیل خودکارسازی فرایند ساخت اشیا حجم کدهای نوشته در برنامه نیز کاهش مییابد.
- اعمال تغییرات بر روی کلاسها آسان میشود، زیرا مدیریت بخش عمدهای از فرایندها بر عهده کلاس Factory است.
دیزاین پترن Abstract Factory در جاوا
دیزاین پترن Abstract Factory شباهت بسیاری به الگوی طراحی Factory دارد. در الگوی Factory نمونهسازی اشیا توسط تنها یک کلاس صورت میگرفت و این کلاس به عنوان کارخانه ساخت اشیا شناخته میشد. مهمترین نکته در خصوص دیزاین پترن Abstract Factory این است که از چندین کارخانه برای ساخت اشیا استفاده میکند. این دیزاین پترن برای ساخت اشیا با ویژگیها مشابه کلاسهای Factory جداگانه را در نظر میگیرد و مسئولیت ساخت اشیا بر عهده این کلاسها است.
مزایای استفاده از دیزاین پترن Abstract Factory در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- این دیزاین پترن از چندین کارخانه برای ساخت اشیا مختلف استفاده میکند. در نتیجه، برای ساخت اشیا جدید به راحتی میتوان کلاسهای ایجاد شده را گسترش داد.
- منطق پیادهسازی این الگوی طراحی بسیار قوی است و دیگر نیازی به استفاده از ساختارهای شرطی در برنامه نیست.
دیزاین پترن Builder در جاوا
از دیزاین پترنهای Factory و Abstract Factory برای ساخت اشیا مختلف از کلاس استفاده میشد. این الگوهای طراحی در زمان ایجاد شی با ویژگیها و خصوصیتهای زیاد با مشکلاتی روبرو میشدند. در نتیجه، برای رفع این مشکلات دیزاین پترن Builder در جاوا معرفی شد. در زمان ایجاد شی با ویژگیهای زیاد الگوهای طراحی Factory و Abstract Factory با ۳ مشکل اساسی زیر درگیر بودند.
- در زمان ایجاد اشیا با ویژگیهای متعدد باید آرگومانهای زیادی به کلاس Factory ارسال شود. در نتیجه، همین امر احتمال بروز خطا را افزایش میدهد. همچنین، حفظ نظم این آرگومانها نیز دشواری خاص خود را دارد.
- برخی از اشیا در زمان ساخت نیازی به استفاده از تمام آرگومانهای کلاس ندارند. بنابراین، میتوان این آرگومانها را اختیاری در نظر گرفت، اما در الگوی طراحی Factory باید تمام آرگومانها به کلاس ارسال شوند. همچنین، آرگومانهای اختیاری در زمان ارسال به صورت Null مشخص میشوند.
- اگر فرایند ایجاد شی مورد نظر پیچیده باشد، آنگاه این پیچیدگی بخشی از کلاس Factory خواهد شد. در نتیجه، درک نحوه عملکرد برنامه بسیار گیجکننده خواهد بود.
راه حل دیزاین پترن Builder در جاوا برای رفع مشکلات چیست؟
این الگوی طراحی با تغییر فرایند ساخت اشیا، پیادهسازی و ایجاد پیچیدهترین اشیا را نیز ممکن کرده است. به کمک این الگو مشکل ساخت اشیا با پارامترهای زیاد و اختیاری توسط ارائه راهحلی برای ساخت گامبهگام این اشیا برطرف شده است.
مزایای استفاده از دیزاین پترن Builder در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- با استفاده از این الگو فرایند ساخت شی به طور کامل کپسوله میشود.
- روند ساخت شی توسط این الگو به طور کامل کنترل میشود.
- استفاده از این دیزاین پترن به کاهش پیچیدگی برنامه میکند. در نتیجه، خوانایی کد نیز افرایش مییابد.
- ساخت پیچیدهترین اشیا به روشی آسان توسط این الگو امکانپذیر است.
- ساخت «اشیا تغییر ناپذیر» (Immutable Objects) نیز به کمک این الگو امکانپذیر است.
دیزاین پترن Prototype در جاوا
دیزاین پترن Prototype در شرایطی مورد استفاده قرار میگیرد که ایجاد شی جدید از کلاس پرهزینه است و به منابع و زمان زیادی احتیاج دارد. پیشفرض استفاده از این الگوی طراحی داشتن یک نمونه مشابه از شی مورد نظر است.

الگوی طراحی Prototype مکانیزمی را برای کپی کردن شی اصلی و ایجاد یک شی جدید معرفی میکند. علاوه بر این، امکان اصلاح ویژگیهای شی کپی شده نیز وجود دارد. این دیزاین پترن از «شبیهسازی جاوا» (Java Cloning) برای کپی کردن شی استفاده میکند. الگوی طراحی Prototype به منظور یکسان بودن نمونه کپی شده و نمونه اصلی شی دستورالعمل مشخصی را ارائه میدهد.
مزایای استفاده از دیزاین پترن Prototype در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- میتوان اشیا جدید را بدون نیاز به وابستگی به سایر کلاسها ایجاد کرد.
- نیاز به ایجاد کلاسهای زیرمجموعه را کاهش میدهد.
- امکان شخصیسازی اشیا ایجاد شده وجود دارد.
دیزاین پترنهای ساختاری
این الگوها بر اساس ساختار و ترکیب کلاس توسعه یافتهاند. دیزاین پترنهای ساختاری روشهای مختلفی را به منظور پیادهسازی کلاسها ارائه میدهند که هدف اصلی تمام آنها بهبود عملکرد بدون تغییر در ترکیب کلاس است. به عنوان مثال، مفاهیم مرتبط با وراثت و ترکیب برای ایجاد یک شی بزرگ از اشیا کوچک نمونهای از روشهای ارائه شده توسط دیزاین پترنهای ساختاری است.
دیزاین پترن Adapter در جاوا
عملکرد اصلی این دیزاین پترن در جاوا برقراری ارتباط بین کلاسها و اینترفیسهای ناسازگار است. کلمه Adapter در لغت به معنای تطبیقدهنده است و کارکرد دیزاین پترن Adapter ارتباط مستقیمی با معنای لغوی آن دارد. در واقع، این الگوی طراحی به کلاسهای ناسازگار امکان استفاده از ویژگیهای یکدیگر را میدهد. به شی مورد استفاده برای ایجاد ارتباط بین اینترفیسهای ناسازگار اصطلاحاً Adapter گفته میشود.
مثالی از کاربرد الگوی طراحی Adapter در دنیای واقعی
عملکرد شارژر گوشیهای موبایل یکی از بهترین و قابل لمسترین نمونههای استفاده از الگوی طراحی Adapter در دنیای واقعی است. باتریهای موبایل برای شارژ نیازمند برقی با ولتاژ ۳ ولت (گاهی تا ۹ ولت) هستند، ولی ولتاژ برق ارائه شده در کشورهای مختلف عددی بین ۱۲۰ تا ۲۲۰ ولت است. در نتیجه، شارژر گوشی موبایل به عنوان یک Adapter یا اصطلاحاً تطبیقدهنده بین سوکت شارژ گوشی و پریز برق عمل میکند.

مزایای استفاده از دیزاین پترن Adapter در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- این دیزاین پترن در جاوا امکان تعامل بین دو شی ناسازگار را فراهم میکند.
- استفاده مجدد از کد نوشته شده را امکانپذیر میسازد.
- استفاده از این دیزاین پترن مقیاسپذیری برنامه را بهبود میبخشد، زیرا استفاده از سرویسها، کتابخانهها و ویژگیهای جدید را بدون نیاز به تغییر کد امکانپذیر میکند.
- این الگوی طراحی کاملاً انعطافپذیر است و امکان پیادهسازی آن به روشهای مختلف وجود دارد.
دیزاین پترن Composite در جاوا
از این دیزاین پترن در جاوا برای نمایش بخشی از یک سلسله مراتب یا ساختار استفاده میشود. دیزاین پترن Composite در جاوا زمانی مورد استفاده قرار میگیرد که عملکردی یکسان بر روی اشیا موجود در ساختار باید اعمال شود. به عنوان مثال، میتوان نمودار را به عنوان ساختاری در نظر گرفت که از بخشهای مختلف نظیر دایره، خطها، مثلث و سایر موارد تشکیل شده است. با رنگ کردن این نمودار با یک رنگ دلخواه به عنوان مثال قرمز این رنگ به تمام اشیا موجود در این ساختار اعمال میشود. در این مثال نمودار را میتوان ساختاری در نظر گرفت که از بخشهای مختلفی تشکیل شده است و تمام این بخشها عملگرهای یکسانی دارند.
بخشهای تشکیل دهنده دیزاین پترن Composite کدامند؟
الگوی طراحی Composite از اجزای زیر تشکیل شده است.
- Base Component: این بخش کلاس یا اینترفیسی است که امکان پیادهسازی متدهای آن توسط تمام اشیا موجود در ساختار سلسله مراتبی وجود دارد.
- Leaf: رفتار عناصر موجود در ساختار توسط این بخش تعریف میشود. این کلاس تنها متدهای اصلی موجود در بخش component را نگهداری میکند. علاوه بر این، این بخش ارتباطی با سایر بخشها ندارد.
- Composite: تمام متدهای اصلی و مورد نیاز برای کار با فرزندان کلاس در این بخش تعریف میشود.
مزایای استفاده از دیزاین پترن Composite در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- استفاده از این الگوی طراحی کار با ساختارهای درختی پیچیده را بسیار آسان میکند.
- امکان افزودن اشیا جدید به ساختار درختی بدون نیاز به اعمال تغییرات زیاد وجود دارد.
- با بهکارگیری کلاسها و اینترفیسهای قابل مدیریت انعطافپذیری ساختار نیز بهبود مییابد.
دیزاین پترن Proxy در جاوا
کلمه Proxy در لغت به معنای نماینده یا وکیل است و کارکرد اصلی این دیزاین پترن در جاوا نیز ارتباط مستقیمی با معنای این کلمه دارد. در واقع، این الگو برای ارتباط با کلاس اصلی از یک واسطه یا نماینده استفاده میکند و ارتباط با کلاس اصلی به صورت مستقیم صورت نمیگیرد. دیزاین پترن Proxy دسترسی کنترل شدهای به عملکردی خاص را ارائه میدهد. به عنوان مثال، کلاسی را در نظر بگیرید که چندین عملکرد مختلف بر روی سیستم را پیادهسازی میکند. در زمان ارائه این برنامه به مشتری نیاز است تا سطوح دسترسی مشخصی در برنامه تعریف شود، زیرا مشتری امکان حذف یا تغییر برخی فایلهای موجود در سیستم را دارد. بنابراین، در این حالت میتوان از یک کلاس Proxy استفاده کرد تا دسترسی کنترل شدهای به برنامه ایجاد شود.

مزایای استفاده از دیزاین پترن Proxy در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- به دلیل استفاده از کلاسهای واسطه برای دسترسی به سایر بخشها، امنیت برنامه بهبود مییابد. با استفاده از این الگوی طراحی دسترسی کنترل شدهای به بخشهای مختلف برنامه ایجاد میشود.
- این الگوی طراحی از به وجود آمدن اشیا تکراری جلوگیری میکند. در نتیجه، این مورد سبب بهبود عملکرد برنامه میشود.
- پیادهسازی این دیزاین پترن در جاوا بسیار آسان است.
دیزاین پترن Flyweight در جاوا
این دیزاین پترن در جاوا زمانی مورد استفاده قرار میگیرد که باید اشیا مختلفی از کلاس ایجاد شود. با توجه به این که هر شی میزان مشخصی از حافظه را مصرف میکند. در نتیجه، مدیریت حافظه به خصوص در دستگاههای با حافظه محدود مانند تلفنهای همراه امری حیاتی به نظر میرسد. دیزاین پترن Flyweight در جاوا به منظور کاهش مصرف حافظه با کمک اشتراک گذاری اشیا طراحی شده است.

مهمترین فاکتورها قبل از پیادهسازی دیزاین پترن Flyweight کدامند؟
الگوی طراحی Flyweight در شرایط خاصی مورد استفاده قرار میگیرد. قبل از پیادهسازی این الگوی طراحی باید شرایط زیر مهیا باشد.
- تعداد اشیا ایجاد شده توسط برنامه زیاد باشد.
- فرایند ایجاد شی حافظه زیادی را مصرف میکند. همچنین، این فرایند زمانبر است.
- امکان تفکیک ویژگیهای شی به ۲ بخش خصوصیتهای درونی و بیرونی وجود داشته باشد. ویژگیهای بیرونی شی باید توسط برنامه مشتری تعریف شود.
مزایای استفاده از دیزاین پترن Flyweight در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- تعداد اشیا ایجاد شده را کاهش میدهد.
- مصرف حافظه برنامه را به میزان قابل قبولی کاهش میدهد.
- وضعیت اشیا مجازی را به صورت متمرکز مدیریت میکند.
- این الگوی طراحی به دلیل استفاده مجدد از اشیا نمونهسازی شده عملکرد برنامه را بهبود میبخشد.
دیزاین پترن Facade در جاوا
هدف اصلی از توسعه این دیزاین پترن در جاوا کمک به برنامههای کاربردی برای تعامل آسانتر با سیستمها بوده است. به عنوان مثال، در دنیای واقعی فردی را در نظر بگیرید که قصد خرید چند محصول مختلف را دارد. یک راه برای این فرد خرید به صورت مستقیم از مبدا تولید یا کارخانههای مرتبط با محصولات است که انرژی و زمان زیادی را باید برای این شیوه صرف کند. روش دوم اما خرید به صورت غیرمستقیم از فروشگاههای ارائه دهنده محصول است که به نوعی واسطه محسوب میشوند.

در این مثال خرید به روش دوم و به کمک واسطهها کار را آسانتر میکند و پیچیدگیهای خرید را نیز کاهش میدهد. دیزاین پترن Facade در جاوا نیز با ایجاد اینترفیسهای مختلف استفاده از سیستم اصلی را آسانتر میکند.
مزایای استفاده از دیزاین پترن Facade در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- این دیزاین پترن پیچیدگیهای سیستمهای زیر مجموعه را پنهان میکند و رابط سادهای نیز برای ارتباط با سیستم اصلی ارائه میدهد.
- به کاهش وابستگی بخشهای مختلف موجود در سیستم کمک کند. در نتیجه، به آسانی میتوان بخشهای مختلف کد را تغییر داد.
- به کمک این دیزاین پترن میتوان بخشهای مختلف سیستم را لایهبندی کرد.
دیزاین پترن Bridge در جاوا
دیزاین پترن Bridge در جاوا برای جداسازی انتزاع از پیادهسازی در بحث اینترفیسها مورد استفاده قرار میگیرد. به طور کلی زمانی از این دیزاین پترن استفاده میشود که ساختاری سلسله مراتبی از اینترفیسها در برنامه وجود داشته باشد. الگوی طراحی Bridge بر اساس ایده کلی ترجیح «ترکیب» (Composition) بر «وراثت» (Inheritance) توسعه یافته است.
مزایای استفاده از دیزاین پترن Bridge در جاوا چیست؟
در ادامه، مزایای استفاده از این دیزاین پترن در جاوا آورده شده است.
- استفاده از این الگوی طراحی نیاز به انجام اصلاحات در آینده را کاهش میدهد، زیرا تعداد کلاسها افزایش چندانی نخواهد داشت.
- امکان توسعه مستقل دو بخش انتزاع و پیادهسازی وجود دارد.
- تغییر یک مولفه تاثیری بر سایر مولفهها نخواهد داشت.
- به کمک این ساختار چندین نفر به طور همزمان میتوانند بر روی بخشهای مختلف پروژه کار کنند.
دیزاین پترن Decorator در جاوا
این دیزاین پترن در جاوا برای اعمال تغییرات بر روی یک شی در زمان اجرا مورد استفاده قرار میگیرد. نکته مثبت در خصوص این الگوی طراحی این است که در زمان اعمال تغییرات تنها شی مورد نظر این تغییرات را دریافت میکند و سایر نمونههای کلاس تحت تاثیر این تغییرات قرار نمیگیرند.

الگوی طراحی Decorator در دسته الگوهای طراحی سازنده قرار دارد و از کلاسهای انتزاعی یا اینترفیس با ترکیب برای پیادهسازی استفاده میکند. به طور کلی از مفهوم وراثت و ترکیب برای گسترش رفتار شی استفاده میشود که این مورد نیز در زمان کامپایل رخ میدهد و تغییرات بر روی همه نمونههای کلاس اعمال میشود. از جمله معایب استفاده از وراثت و ترکیب برای گسترش رفتار شی این است که امکان حذف یا افزودن ویژگیها در زمان اجرا وجود ندارد. در نقطه مقابل، دیزاین پترن Decorator این امکان را فراهم میکند.
مزایای استفاده از دیزاین پترن Decorator در جاوا چیست؟
در ادامه، به چند مورد از مزایای این دیزاین پترن در جاوا اشاره شده است.
- استفاده از این الگوی طراحی به جای وراثت انعطافپذیری بیشتری را به برنامه میدهد.
- امکان توسعهپذیری شی در این روش بیشتر است.
- کد نویسی برای رفتارهای مختلف شی نیز توسط این دیزاین پترن آسانتر میشود، زیرا نیازی به مشخص کردن تمام رفتارهای شی وجود ندارد و تنها میتوان برخی از عملکردهای مورد نیاز را توسعه داد.
دیزاین پترنهای رفتاری
تمرکز اصلی دیزاین پترنهای رفتاری بر روی نحوه ارتباط یک کلاس با سایر کلاسها است. این الگوهای طراحی راهحلهای بسیار خوبی را برای تعامل و ارتباط بهتر بین اشیا مختلف ارائه میدهند.
در ادامه، چند مورد از بهترین و پرکاربردترین دیزاین پترنهای موجود در زبان جاوا ارائه شده است.
دیزاین پترن Template Method در جاوا
ایده اصلی این دیزاین پترن در جاوا ارائه الگوریتمی برای بخشبندی مراحل پیادهسازی و سپردن اجرای برخی از مراحل به کلاسهای زیر مجموعه است. این الگوی طراحی مراحل اجرا را به گامهای کوچکی تقسیم و ترتیب اجرای این گامها را نیز مشخص میکند. اصلیترین بخش در این الگوی طراحی متد Template است که مراحل اجرای الگوریتم را به دقت مشخص میکند. علاوه بر این، متد Template امکان ارائه پیادهسازی پیشفرض برای همه یا برخی از کلاسها را نیز دارد.
مثالی از دیزاین پترن Template Method در دنیای واقعی
برای درک بهتر این الگوی طراحی آن را در قالب مثالی در دنیای واقعی بررسی میکنیم. به عنوان مثال، مراحل ساخت خانه را به صورت الگوریتمی در نظر بگیرید. برای ساخت یک خانه مراحل زیر به ترتیب باید انجام شوند.
- ایجاد پی یا فونداسیون ساختمان
- ستونهای ساختمان
- ساخت دیوارها
- ساخت پنجرهها
مهمترین نکته در مراحل ساخت خانه این است که امکان تغییر ترتیب مراحل وجود ندارد. به عنوان مثال، نمیتوان قبل از ایجاد فونداسیون ساختمان شروع به ساخت پنجرهها کرد. بر اساس الگوی طراحی «Template Method» میتوان مراحل ساخت خانه را به گامهای کوچکی تقسیم کرد و از یک متد برای ساخت بخشهای مختلف خانه استفاده کرد. در این روش میتوان بخشهای مختلف خانه را جداگانه نیز ساخت، اما ترتیب قرارگیری و سرهم کردن این بخشها را متد Template مشخص میکند.

مزایای استفاده از دیزاین پترن Template Method در جاوا چیست؟
در ادامه برخی از مهمترین نقاط قوت این الگوی طراحی آورده شده است.
- این دیزاین پترن در جاوا به کاهش میزان کدهای تکراری کمک میکند.
- به دلیل بهرهگیری از مفاهیم وراثت استفاده مجدد از کد توسط این الگوی طراحی محقق میشود.
- این دیزاین پترن به کلاسها این امکان را میدهد تا چگونگی اجرای مراحل الگوریتم را مشخص کنند. در نتیجه، انعطافپذیری کد نیز بیشتر میشود.
دیزاین پترن Mediator در جاوا
تمرکز اصلی این دیزاین پترن در جاوا بر ارائه یک رسانه ارتباطی متمرکز بین اشیا مختلف است. در واقع، این گونه میتوان تصور کرد که این دیزاین پترن برای کاهش پیچیدگی ارتباطات بین اشیا مختلف یک واسطه را مشخص میکند.

با افزایش ارتباطات بین اشیا درون سیستم میزان پیچیدگی تعاملات بیشتر میشود و در نتیجه، وابستگی بین اشیا نیز افزایش مییابد. بنابراین، هزینه نگهداری سیستم بالاتر میرود و انعطافپذیری آن برای اعمال تغییرات نیز کاهش مییابد. دیزاین پترن Mediator بر ارائه یک واسطه بین اشیا مختلف جهت تسهیل در ارتباطات تاکید دارد.
مزایای استفاده از دیزاین پترن Mediator در جاوا چیست؟
با توجه به ویژگیهای اصلی این دیزاین پترن میتوان مزایای زیر را برای آن در نظر گرفت.
- به کاهش ارتباطات مستقیم اشیا با یکدیگر کمک میکند.
- وابستگیهای بین اشیا انعطافپذیر است و به آسانی میتوان وابستگیهای جدید را بین اشیا ایجاد کرد.
- با توجه به کپسوله شدن منطق برنامه درون کلاس Mediator برای افزودن وابستگیهای جدید به یک کلاس تنها باید کلاس Mediator را گسترش داد.
- در این دیزاین پترن ارتباط بین کلاسها سادهسازی شده است. بنابراین، برای ارتباط یک کلاس با چندین کلاس دیگر تنها کافی است که کلاس مبدا دستوری را به کلاس Mediator ارسال کند.
دیزاین پترن Chain of Responsibility در جاوا
ترکیب Chain of Responsibility در لغت به معنای زنجیره مسئولیت است و عملکرد این دیزاین پترن در جاوا ارتباط مستقیمی با نام آن دارد. بر اساس این الگوی طراحی درخواست کلاینت برای پردازش به زنجیرهای از اشیا ارسال میشود. سپس، اشیا موجود در زنجیره خودشان تصمیم میگیرند که چه کسی باید درخواست را پردازش کند.
مثالی از دیزاین پترن Chain of Responsibility در دنیای واقعی
برای درک بهتر نحوه عملکرد الگوی طراحی Chain of Responsibility مثالی از کارکرد این دیزاین پترن در دنیای واقعی ارائه خواهد شد. به عنوان مثال، شرایطی را در نظر بگیرید که فردی برای خرید یک نمونه خاص از گوشی تلفن همراه به یک مجتمع تجاری بزرگ مراجعه کرده است. در گام نخست این فرد به یکی از مغازهها مراجعه و برای خرید گوشی اقدام میکند. اقدام برای خرید گوشی در اینجا حکم «درخواست کلاینت» (Client Request) را دارد. در این شرایط فروشنده مغازه در صورت موجود داشتن نمونه مورد نظر آن را ارائه میدهد و در غیر این صورت فرد را به مغازه دیگری در مجتمع تجاری ارجاع میدهد. به همین شکل این روند توسط مغازه بعدی نیز تکرار خواهد شد تا نهایتاً خرید انجام شود. در این شرایط فروشندههای مغازهها را میتوان به عنوان اعضا زنجیره مسئولیت در نظر گرفت.

مهمترین نکات در دیزاین پترن Chain of Responsibility
در ادامه، برخی از مهمترین نکات موجود در این دیزاین پترن در جاوا آورده شده است.
- در این الگو کلاینت اطلاعی ندارد که درخواستش توسط کدام عضو زنجیره پردازش میشود و تنها درخواست خود را به اولین شی موجود در زنجیره مسئولیت ارسال میکند.
- هر شی موجود در زنجیره شیوه منحصر به فرد خود را برای پردازش درخواست دارد.
- اشیا موجود در زنجیره به یکدیگر مرتبط هستند. به این دلیل که باید توانایی ارسال درخواست کلاینت بین یکدیگر را داشته باشند.
- پیادهسازی اشیا موجود در زنجیره از اهمیت بسیار بالایی برخوردار است، زیرا باید از ارسال درخواست کلاینت به تمام اشیا موجود در زنجیره اطمینان حاصل کرد.
دیزاین پترن Observer در جاوا
از دیزاین پترن Observer در جاوا برای اطلاعرسانی در خصوص تغییرات یک شی استفاده میشود. در این الگوی طراحی به شی که وضعیت شی دیگر را مشاهده میکند، اصطلاحاً «ناظر» (Observer) گفته میشود. همچنین، به شی که توسط ناظر مشاهده میشود، نیز «موضوع» (Subject) میگویند. در واقع، این الگوی طراحی یک وابستگی یک به چند را بین اشیا تعریف میکند و با تغییر وضعیت یک شی تمام وابستههای آن شی به خودکار مطلع و بروزرسانی میشوند.

جاوا از یک پلتفرم داخلی برای پیادهسازی الگوی Observer استفاده میکند. این الگو توسط کلاسjava.util.Observable و اینترفیسjava.util.Observer در جاوا قابل پیادهسازی است. علاوه بر این، «سرویس پیامرسان جاوا» (Java Message Service | JMS) از الگوی Observer به همراه دیزاین پترن Mediator استفاده میکند تا امکان اشتراکگذاری و انتشار دادهها را به سایر برنامهها بدهد.
مزایای استفاده از دیزاین پترن Observer در جاوا چیست؟
در ادامه، چند مورد از مهمترین مزایای کاربرد این دیزاین پترن در جاوا ارائه شده است.
- این دیزاین پترن انعطافپذیری بسیار خوبی در ایجاد ارتباطات بین اشیا مختلف فراهم میکند.
- امکان افزودن یا حذف ناظران در هر لحظه وجود دارد.
- امکان ارسال اطلاعات بین اشیا بدون تغییر در کلاسهای Subject و Observer وجود دارد.
دیزاین پترن Strategy در جاوا
دیزاین پترن Strategy در جاوا زمانی مورد استفاده قرار میگیرد که برای انجام کاری مشخص چندین الگوریتم وجود داشته باشد. این الگوی طراحی در دنیای برنامه نویسی تحت عنوان الگوی «سیاست» (Policy) یا سیاست نیز شناخته میشود. در این شیوه چندین الگوریتم برای اجرای کاری مشخص تعریف میشوند و برنامههای کلاینت امکان انتخاب الگوریتم مناسب را در زمان اجرا دارند. یکی از بهترین مثالها برای این دیزاین پترن در دنیای واقعی انتخاب درگاه پرداخت از بین گزینههای موجود در سایتها و اپلیکیشنها مختلف است.

مزایای استفاده از این دیزاین پترن در جاوا چیست؟
از جمله مهمترین مزایای این دیزاین پترن در جاوا میتوان به موارد زیر اشاره کرد.
- بهبود انعطافپذیری کد: با کپسوله کردن رفتار شی در قالب استراتژیهای مختلف کد انعطافپذیرتر شده و اصلاح آن نیز آسانتر صورت میگیرد.
- قابلیت استفاده مجدد کد: با توجه به کپسوله بودن استراتژیها امکان استفاده مجدد از آنها در اشیا و پروژههای مختلف وجود دارد.
- بهبود کد نویسی: این دیزاین پترن استفاده از شیوههای کد نویسی خوب را تشویق میکند و در کاهش پیچیدگی کد نیز بسیار موثر است.
- تست آسان کدها: با جداسازی الگوریتمها و رفتارهای مختلف اشیا فرایند تست نیز آسانتر میشود.
دیزاین پترن Command در جاوا
دیزاین پترن Command در جاوا برای پیادهسازی اتصال سست در یک مدل درخواست و پاسخ مورد استفاده قرار میگیرد. در این الگو درخواست به Invoker ارسال شده و سپس Invoker درخواست را به شی کپسوله شده Command ارسال میکند. در ادامه نیز شی Command درخواست را برای اجرا به مناسبترین متد گیرنده میفرستد.
دیزاین پترن State در جاوا
دیزاین پترن State در جاوا زمانی مورد استفاده قرار میگیرد که باید رفتار شی متناسب با وضعیت داخلی آن تغییر کند. برای تغییر رفتار شی با توجه به وضعیت آن میتوان متغیری برای نگهداری وضعیت شی تعریف کرد. سپس با استفاده از ساختار شرطیif-else میتوان دستورات قابل اجرا در هر حالت را تعیین کرد.
دیزاین پترن Visitor در جاوا
دیزاین پترن Visitor در جاوا زمانی مورد استفاده قرار میگیرد که باید عملیاتی مشابه بر روی گروه بزرگی از اشیا پیادهسازی شود. به کمک این الگوی طراحی میتوان منطق پیادهسازی را از اشیا به کلاس دیگری منتقل کرد. به عنوان مثال، سبد خرید برنامهای را در نظر بگیرید که میتوان اقلام مختلف را در آن قرار داد. با کلیک بر روی دکمه پرداخت کل مبلغ پرداختی توسط کاربر محاسبه شده و نمایش داده میشود. اکنون میتوان منطق محاسبه مبلغ کل رو در کلاسهای مربوط به هر ایتم داشت یا به کمک دیزاین پترن Visitor این منطق به کلاس دیگری منتقل شود.

دیزاین پترن Interpreter در جاوا
دیزاین پترن Interpreter در جاوا را تحت عنوان مفسر میشناسند. کار اصلی این الگوی طراحی با توجه به نام آن تفسیر یکسری از قواعد است. به عنوان مثال، عبارتی را به عبارت دیگر تفسیر میکند.
دیزاین پترن Iterator در جاوا
دیزاین پترن Iterator در جاوا روشی استاندارد برای پیمایش گروهی از اشیا ارائه میدهد. این الگوی طراحی به طور گستردهای در فریمورک Collection در جاوا مورد استفاده قرار میگیرد که در آن اینترفیس Iterator متدهای مختلفی را برای پیمایش مجموعهای اشیا معرفی میکند. علاوه بر این، این دیزاین پترن با توجه به نیازهای کاربر شیوههای مختلفی را برای پیمایش عناصر ارائه میدهد.
دیزاین پترن Memento در جاوا
از دیزاین پترن Memento در جاوا برای ذخیره وضعیت شی استفاده میشود تا بتوان بعداً آن را بازیابی کرد. اصل کپسولهسازی اطلاعات در پیادهسازی این الگوی طراحی رعایت شده است و امکان دسترسی به وضعیت شی خارج از آن وجود ندارد.
دیزاین پترن Memento به کمک دو شی Originator و Caretaker پیادهسازی میشود. در این تعریف Originator به عنوان شی تعریف میشود که وضعیت آن باید ذخیره و بازیابی شود و از یک کلاس داخلی برای ذخیرهسازی وضعیت شی استفاده میکند. این کلاس داخلی Memento نام دارد و به صورت خصوصی تعریف میشود. در نتیجه، امکان دسترسی از طریق سایر اشیا خارجی به آن وجود ندارد.
مثالی از کاربرد دیزاین پترن Memento در دنیای واقعی
به عنوان مثالی ساده از کاربرد دیزاین پترن Memento در دنیای واقعی میتوان به عملیات Undo یا بازگشت به عملکرد قبلی در یک ماشین حساب اشاره کرد. برای مثال، در زمان انجام محاسبات با ماشین حساب امکان وارد کردن مقداری اشتباه یا استفاده از یک عملگر نادرست وجود دارد. در نتیجه، به جای انجام دوباره تمام محاسبات میتوان به حالت قبلی برگشت و مجدداً محاسبات را از آنجا شروع کرد.

مزایای استفاده از این دیزاین پترن در جاوا چیست؟
از جمله مهمترین مزایای این دیزاین پترن در جاوا میتوان به موارد زیر اشاره کرد.
- این دیزاین پترن با رعایت قواعد کپسولهسازی وضعیت اشیا را ذخیره میکند.
- مکانیزمی برای بازیابی وضعیت اشیا در صورت بروز خطا ارائه میدهد.
- میتوان از چرخه حیات شی به کمک این دیزاین پترن مطلع شد.
بررسی چند دیزاین پترن متفرقه
از ابتدا نوشته تا کنون الگوهای طراحی موجود در دستهبندیهای سه گانه رفتاری، ساختاری و سازنده مورد بررسی قرار گرفتند. علاوه بر این الگوها دیزاین پترنهای زیادی وجود دارند که در این دستهبندیها قرار نمیگیرند. در این بخش به چند مورد از محبوبترین این دیزاین پترنها خواهیم پرداخت.
دیزاین پترن DAO
الگوی طراحی «شی دسترسی به داده» (Data Access Object | DAO) برای جدا کردن منطق ماندگاری داده و انتقال آن به لایهای دیگر مورد استفاده قرار میگیرد. این الگو به عنوان یکی از محبوبترین و پرکاربردترین دیزاین پترنها در زمینه کار با «پایگاه داده» (Database) شناخته میشود. ایده اصلی این دیزاین پترن جداسازی لایه سرویس از لایه دسترسی به داده است. بدین ترتیب جداسازی منطق در برنامه صورت میگیرد.
دیزاین پترن تزریق وابستگی
دیزاین پترن «تزریق وابستگی» (Dependency Injection) به برنامهنویسان این امکان را میدهد تا وابستگیهای پیچیده را از کد خود حذف کنند. در نتیجه این امر برنامه نوشته شده بر مبنای این الگوی طراحی قابل گسترش، آزاد و با قابلیت نگهداری بالا خواهد بود. این الگوی طراحی با استفاده از تعریف اینترفیس جداگانه وابستگیهای موجود بین دو کلاس را حذف میکند. در واقع، تزریق وابستگی تکنیکی است که بر عملکرد مستقل کلاسها در برنامه تاکید دارد. البته ذکر این نکته ضروری است که وجود وابستگی بین کلاسهای موجود در برنامه برای داشتن عملکرد صحیح ضروری است و این دیزاین پترن تنها وابستگیهای اضافی را حذف میکند.
مثالی از دیزاین پترن تزریق وابستگی در دنیای واقعی
درک مفهوم تزریق وابستگی با ارائه مثالی از این الگوی طراحی در دنیای واقعی آسانتر خواهد بود. به عنوان مثال، میتوان به طراحی اتومبیل اشاره کرد که از بخشهای مختلفی همچون سیستم سوخت رسانی، سیستم استارت، سیستم روشنایی، سیستم الکتریکی، سیستم تهویه مطبوع، سیستم کنترل پایداری و سایر موارد تشکیل شده است. در صورت بروز مشکل در هر کدام از بخشهای تشکیل دهنده خودرو تنها باید ایراد را در همان قسمت برطرف کرد. در نتیجه، میتوان گفت که بخشهای مختلف مستقل از یکدیگر فعالیت میکنند. البته وجود وابستگی بین بعضی از بخشها نظیر سیستم استارت و موتور خودرو الزامی است و در صورت بروز مشکل در بخش استارت، موتور خودرو روشن نخواهد شد.
دیزاین پترن MVC
الگوی Model-View-Controller یا به اختصار MVC یکی از قدیمیترین الگوهای توسعه برنامههای وب است. بر اساس این دیزاین پترن معماری نرمافزار را باید به ۳ لایه مجزا تقسیم کرد. در نتیجه، امکان توسعه مستقل هر کدام از لایهها بر اساس این الگو امکانپذیر خواهد بود و در نهایت میتوان ارتباط بین آنها را برقرار کرد.
از جمله مزایای استفاده از دیزاین پترن MVC میتوان به موارد زیر اشاره کرد.
- هر شی در این ساختار وظایف متفاوتی دارد.
- امکان توسعه برنامه به صورت موازی وجود دارد.
- مدیریت و نگهداری کد آسانتر خواهد بود.
- کلاسها و اشیا مختلف مستقل از یکدیگر هستند.
- افزایش سرعت توسعه را به دنبال دارد.
سوالات متداول دیزاین پترن در جاوا
بعد از پاسخ به این سوال که دیزاین پترن در جاوا چیست و انواع مختلف آن کدامند، در این بخش از نوشته به متداولترین و پرتکرارترین سوالات موجود در حوزه دیزاین پترن پاسخ داده شده است.
پرکاربردترین دیزاین پترن در جاوا چیست؟
دیزاین پترن Factory یکی از محبوبترین الگوهای طراحی مورد استفاده در زبان جاوا است. این الگوی طراحی با سپردن مسئولیت نمونهسازی و ساخت اشیا به کلاس Factory فرایند ساخت اشیا را تسهیل میکند.
پیش نیاز یادگیری دیزاین پترن در جاوا چیست؟
یادگیری مباحث مربوط برنامه نویسی شیگرا یکی از پیش نیازهای یادگیری دیزاین پترن در جاوا است. ایده اصلی شکلگیری الگوهای طراحی حل کردن برخی از مشکلات رایج در برنامه نویسی شیگرا است. این الگوها ارائه دهنده بهترین شیوهها و تکنیکهای برنامه نویسی شیگرا هستند. بنابراین، امکان جداسازی مباحث برنامه نویسی شیگرا از الگوهای طراحی وجود ندارد.
آسانترین دیزاین پترن در جاوا چیست؟
دیزاین پترن Singleton یکی از سادهترین الگوهای طراحی موجود در جاوا است. این الگوی طراحی در زمره دیزاین پترنهای سازنده قرار دارد و یکی از بهترین روشهای برای ساخت شی را ارائه میدهد.
دلیل استفاده از دیزاین پترن در جاوا چیست؟
الگوهای طراحی مجموعهای از راهحلهای استاندارد و تست شده برای مشکلات رایج در طراحی نرمافزار هستند. در صورت عدم مواجه با مشکلات نیز یادگیری این الگوهای طراحی مفید است، زیرا نحوه برخورد و حل مشکلات با استفاده از اصول برنامه نویسی شیگرا را خواهید آموخت.
جمعبندی
توسعهدهندگان فارغ از زبان برنامه نویسی بعد از یادگیری الفبای برنامه نویسی و آشنایی با مفاهیم پایهای نظیر تعریف متغیر، توابع، کتابخانهها، اصول برنامه نویسی شیگرا و سایر موارد به دنبال تکنیکهایی برای افزایش کارایی و بهبود عملکرد خود هستند. الگوهای طراحی یا اصطلاحاً دیزاین پترنها یکی از مهمترین مباحثی هستند که هر توسعهدهنده برای بهبود عملکرد خود باید آشنایی کاملی با آنها داشته باشد. بر همین اساس در این مطلب از مجله فرادرس به این سوال پاسخ داده شد که دیزاین پترن در جاوا چیست و چه کاربردی دارد.
علاوه بر این، انواع مختلف دیزاین پترنها در قالب دستهبندی ۳ گانه ارائه شده مورد بررسی قرار گرفتند. در ادامه قابلیتها و نکات مثبت استفاده از هر کدام از دیزاین پترنها عنوان شد. همچنین، برای درک بهتر بعضی از الگوهای طراحی سعی شد تا مثالی قابل لمس از کاربرد آنها در دنیای واقعی نیز عنوان شود. در انتها نیز به متداولترین سوالات موجود در این حوزه پاسخ داده شد.