زمان تخمینی مطالعه: 7 دقیقه

الگوهای طراحی راه حل‌های معمولی برای مشکلات رایج در طراحی نرم افزار هستند. در واقع دیزاین پترن‌ها(Design Pattern) مانند نقشه‌های از پیش ساخته شده‌ای هستند که می‌توانید آنها را برای حل یک مشکل طراحی تکراری در برنامه نویسی و کد خود سفارشی کنید. کاربر نمی‌تواند فقط یک الگو را پیدا کرده و آن را در برنامه خود کپی کند، همانطور که با توابع یا کتابخانه‌های بیرونی می‌تواند. الگوی طراحی یک قطعه کد خاص نیست، بلکه یک مفهوم کلی برای حل یک مشکل خاص است. شما می‌توانید جزئیات الگو را دنبال کنید و راه حلی متناسب با واقعیت‌های برنامه خود را پیاده سازی کنید.

الگوها اغلب با الگوریتم‌ها اشتباه گرفته می‌شوند، زیرا هر دو مفهوم راه حل‌های معمولی برای برخی از مسائل شناخته شده را توصیف می‌کنند. در حالی که یک الگوریتم همیشه مجموعه واضحی از اقدامات را تعریف می‌کند که می‌تواند به هدفی دست یابد در حالی که یک الگوی طراحی توصیف سطح بالایی از یک راه حل است. کد یک الگوی اعمال شده برای دو برنامه مختلف ممکن است متفاوت باشد. اگر بخواهیم الگوریتم و Design pattern را با هم مقایسه کنیم باید گفت هر دو دارای مراحل روشن برای رسیدن به یک هدف هستند. از سوی دیگر، یک الگوی طراحی بیشتر شبیه یک طرح اولیه است: شما می‌توانید ببینید که نتیجه و ویژگی‌های آن چیست، اما ترتیب دقیق اجرای آن به شما بستگی دارد.

الگوی طراحی از چه چیزی تشکیل شده است؟

بیشتر الگوهای طراحی بسیار رسمی(Formal) توصیف می‌شوند تا افراد بتوانند آنها را در زمینه‌های مختلف بازتولید کنند. در ادامه بخش‌هایی که معمولاً در توضیحات الگوهای طراحی وجود دارند آورده شده است:

برخی از کاتالوگ‌های الگو، جزئیات مفید دیگری مانند قابلیت کاربرد الگو، مراحل اجرا و روابط با سایر الگوها را لیست می‌کنند.

تاریخچه الگوهای طراحی

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

مفهوم الگوها اولین بار توسط کریستوفر الکساندر در کتاب A Pattern Language: Towns, Buildings, Construction توضیح داده شد. این کتاب یک “زبان” برای طراحی محیط شهری را توصیف می‌کند. واحدهای این زبان الگوها هستند. این زبان قادر به توصیف موارد متنوع مانند این است که پنجره‌ها چقدر باید بلند باشد، یک ساختمان باید چند سطح داشته باشد، فضای سبز در یک محله چقدر بزرگ است و غیره.

این ایده توسط چهار نویسنده دیگر شامل اریش گاما، جان ولیسیدز، رالف جانسون و ریچارد هلم انتخاب شد. در سال 1994 آنها Design Patterns: Elements of Reusable Object-Oriented Software را منتشر کردند که در آن مفهوم الگوی طراحی یا Design Pattern را در برنامه نویسی به کار گرفتند. این کتاب دارای 23 الگو بود که مشکلات مختلف طراحی شی گرا را حل می‌کرد و خیلی سریع به یکی از پرفروش ترین‌ کتاب‌های حوزه برنامه نویسی تبدیل شد. به دلیل نام طولانی این کتاب، در بین برنامه نویسان این کتاب با نام «the book by the gang of four» شناخته می‌شود و حتی به طور خلاصه آن را «کتاب GoF» می‌نامند.

از آن زمان، ده‌ها الگوی شی گرا دیگر کشف شده است. “رویکرد الگو” در سایر زمینه‌های برنامه نویسی بسیار محبوب شد، بنابراین بسیاری از الگوهای دیگر در حال حاضر خارج از طراحی شی گرا نیز وجود دارند.

چرا باید Design Pattern را یاد بگیرم؟

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

انتقادات وارده به الگوهای طراحی

بیایید نگاهی به معمول‌ترین استدلال‌ها علیه استفاده از الگوهای طراحی بیندازیم.

انواع Design Pattern

الگوهای طراحی با اساس پیچیدگی، سطح جزئیات و مقیاس کاربرد آنها برای کل سیستم طراحی شده، متفاوت هستند. ابتدایی ترین و سطح پایین ترین الگوها را اغلب اصطلاحات(idioms) می‌نامند. آنها معمولا فقط برای یک زبان برنامه نویسی اعمال می‌شوند. کلی‌ترین و سطح بالاترین الگوها الگوهای معماری هستند. توسعه دهندگان می‌توانند این الگوها را تقریباً در هر زبانی پیاده سازی کنند. بر خلاف سایر الگوها، می‌توان از آنها برای طراحی معماری کل برنامه استفاده کرد. علاوه بر این، همه الگوهای طراحی را می‌توان بر اساس هدف یا هدفشان دسته بندی کرد. این مقاله سه گروه اصلی از الگوها را پوشش می‌دهد:

در مقالات بعدی الکتروهایو این سه دسته را به طور کامل تشریح خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *