دیزاین پترن ها یا الگو های دیزاین
منظور از دیزاین پترن راه کارهایی اصولی و در عین تست شده است که در پاسخ به چالش هایی ایجاد شدهاند که در توسعه ی نرمافزار با آنها مواجه خواهیم شد. از یک بعد دیگر، دیزاین پترن ها را میتوان به عنوان یکسری Best Practices نیز در نظر گرفت.
در دنیای برنامه نویسی شیء گرایی، کمتر برنامه نویسی که حرفهای باشد را میتوان یافت که با چیزی تحت عنوان Design Patterns (دیزاین پترن یا الگوهای طراحی) آشنا نباشد. به طور خلاصه، منظور از دیزاین پترن راه کارهایی اصولی و در عین تست شده است که در پاسخ به چالش هایی ایجاد شدهاند که در توسعه ی نرمافزار با آنها مواجه خواهیم شد. از یک بعد دیگر، دیزاین پترن ها را میتوان به عنوان یکسری Best Practices نیز در نظر گرفت.
آیا تا به حال به این قضیه فکر کردهاید که اساساً کاربرد Design Pattern در کدنویسی چیست و چرا گفته میشود که استفادهٔ صحیح و اصولی از دیزاین پترنها در توسعهٔ نرمافزارهای حرفهای بسیار تأثیرگذار است و همچنین چرا در آگهیهای استخدام برنامهنویس آشنایی با آنها از اهمیت بسزایی برخوردار است؟
در یک کلام، دیزاین پترن الگویی است که باید در موقعیت مناسب خود مورد استفاده قرار بگیرد تا بهترین نتیجه را در توسعهٔ نرمافزار در اختیار دولوپر قرار دهد. در عین حال توجه داشته باشیم که مفهوم دیزاین پترن اصلاً وابسته به زبان برنامهنویسی خاصی نیست و یک دیزاین پترن خوب باید قابلیت پیادهسازی در بیشتر زبانها (اگر نگوییم همه) را داشته باشد که این مسئله ارتباط تنگاتنگی با ویژگیهای زبان مورد استفاده نیز دارا است.
آشنایی با انواع دیزاین پترنها
مهمتر از همه اینکه هر دیزاین پترنی را میتوان به عنوان شمشیر دولبهای در نظر گرفت که اگر در جای نادرست به کار رود، میتواند فجایع و مشکلات بیشماری را هم برای نرمافزار و هم دولوپرها بهوجود آورد؛ اما اگر در موقعیت و زمان مناسب خود مورد استفاده قرار بگیرد، میتواند در نقش ناجی نیز عمل نماید. دیزاین پترنها معمولاً در سه گروه اصلی دستهبندی میشوند که عبارتند از:
– Structural (ساختاری)
– Creational (تکوینی)
– Behavioral (رفتاری)
الگوهای طراحی ساختاری به طور معمول دربارهٔ ارتباط بین یکسری Entity (موجودیت) هستند که باعث میشوند کار کردن این اِنتیتیها با یکدیگر آسانتر شود. الگوهای تکوینی معمولاً ارائهدهندهٔ یکسری مکانیزمهای نمونهسازی هستند که باعث میشوند ساخت آبجکتهای مناسب در موقعیتهای مختلف آسانتر گردد و در نهایت پترنهای رفتاری به منظور برقراری ارتباط بین اِنتیتیها به کار میروند و باعث میشوند ارتباط اِنتیتیها با یکدیگر، انعطافپذیرتر و سادهتر گردد.
چرا باید از دیزاین پترنها استفاده کنیم؟
دیزاین پترنها در اصل راهحلهای حسابشدهای برای مشکلات خاصی در پروسهٔ توسعهٔ نرمافزار هستند که پیش از این بسیاری از دولوپرها با چنین مشکلاتی دست و پنجه نرم کردهاند و یکسری سولوشنهای بهینهای را برای علاج کار خود برگزیدهاند. اگر به این مشکلات حلشده برخورد کنید، منطق حکم میکند که به استفاده از راهحلهای موجود بپردازید تا اینکه به دنبال اثبات راهحل جدیدی بوده و زمان ارزشمند توسعهٔ نرمافزار را هدر دهید!