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