دیزاینپترنها، در واقع یک راهحل یا استراتژی اثباتشده برای حلکردن یک مسئله یا انجام یک وظیفه ی مشخص در زبان های شیءگرا (object oriented) هستند. اما این الگوهایطراحی، تنها ایدهی اصلی رفع یک مشکل را بیان میکنند و پیاده سازی مشخص ندارند. به همین دلیل وابسته به یک زبان خاص نیستند و میتوانند در زبانهای برنامه نویسی مختلف استفاده شوند.
استفاده از الگوهای طراحی باعث میشود تا کد نوشته شده، انعطاف بیشتری پیدا کرده و همچنین قابلیت نگهداری و باز استفاده کردن آن نیز افزایش یابد. جالب است بدانید که در طراحی تعداد زیادی از کلاسهای درونی زبانهایی مثل جاوا نیز، از دیزاینپترنها استفاده شدهاست که نشاندهنده ی اهمیت و مفیدبودن استفاده از این الگوهایطراحی است.
البته باید توجه کنیم که دیزاین پترن ها ادعا نمی کنند که راه حل پیشنهاد شده توسط آنها، تنها راهحل ممکن برای مسئلهی مشخص شده است! بلکه الگوهایطراحی، راهحل هایی را به ما نشان میدهند که در طی پروژههای مختلف ثابت شده است میتوانند مسئلهی موردنظر را به شکل خوب و بهینه حل کنند. این الگوهایطراحی که قبلا بارها در آزمون و خطای برنامهنویسان مختلف، امتحان خود را پس دادهاند، به صورتی طراحی شده اند که آنقدر واضح باشد تا به همهی توسعهدهندگان در طراحی یک معماری خوب برای نرمافزار درحال توسعه کمک کنند. این موضوع در طراحی معماری سیستم بسیار کمککننده است و به معماران نرمافزار کمک میکند تا بتوانند به وسیلهی آنها یک سیستم بهتر را طراحی کنند.
دیزاینپترن ها به طور کلی به دو دسته تقسیم میشوند:
1- Core Java (or JSE) Design Patterns
2- JEE Design Patterns
هر یک از این دستهها نیز به تنهایی شامل تقسیمبندیهای مختلفی هستند که در این بخش به بررسی آنها میپردازیم:
این دسته، شامل سه گروه از الگوهایطراحی به شکل زیر می باشد:
اول) Creational Design Pattern
این دسته از دیزاینپترن ها روی راههای ایجاد آبجکت از یک کلاس تمرکز دارند و زمانی استفاده می شوند که قراراست در هنگام ساخت Instance از یک کلاس، تصمیم خاصی گرفته شود یا شرایط خاصی رعایت شود.
دوم) Structural Design Pattern
الگوهایطراحی ساختاری با این هدف ایجاد شدهاند که مشخص کنند چطور میتوانیم کلاسها و آبجکتها را باهم ترکیب کنیم و به این ترتیب یک ساختار بزرگتر ایجاد کنیم. این الگوها، این کار را با مشخصکردن ارتباطات بین کلاسها و سادهکردن ساختارها انجام میدهند.
در واقع این الگوها روی این موضوع تمرکز می کنند که کلاسها باید چگونه و با چه ترتیبی از یکدیگر ارث ببرند یا با هم ترکیب شوند تا روابطی که میخواهیم ایجاد شود.
سوم) Behavioral Design Pattern
الگوهایطراحی رفتاری به نحوهی تعامل درست و پاسخگوبودن آبجکتها مربوط میشود. در الگوهایطراحی موجود در این دسته، تعامل بین اشیاء باید به گونه ای باشد که بتوانند به راحتی با یکدیگر تعامل و همکاری کنند.
در بخشهای بعد، الگوهایطراحی مربوط به هر دسته را بهصورت دقیق توضیح خواهم داد. توصیه میکنم تا انتهای این سلسله پستها با من همراه باشید.